[−][src]Crate bdays
Provides functions to perform business days calculation between dates, given a Holiday Calendar.
A Business Day is defined as a weekday that is not a holiday.
To check if a date is a holiday, you must provide an implementation of the HolidayCalendar
trait.
This crate is a port of BusinessDays.jl to the Rust programming language.
Provided Holiday Calendars
This crate provides a set of built-in holiday calendars in the bdays::calendars
submodule.
bdays::calendars::WeekendsOnly
: accounts only weekendsbdays::calendars::brazil::BRSettlement
: Brazilian banking holidaysbdays::calendars::brazil::BrazilExchange
: BMF&BOVESPA Exchange holidays (http://www.bmfbovespa.com.br)bdays::calendars::us::USSettlement
: United States federal holidays
Usage
use chrono::NaiveDate; use bdays::HolidayCalendar; // creates a holiday calendar instance let cal = bdays::calendars::WeekendsOnly; let d0 = NaiveDate::from_ymd(2018, 11, 22); let d1 = NaiveDate::from_ymd(2018, 11, 24); let d2 = NaiveDate::from_ymd(2018, 11, 26); // checks if a date is a holiday assert_eq!( cal.is_holiday(d0), false ); // checks if a date is a business day assert_eq!( cal.is_bday(d0), true ); assert_eq!( cal.is_bday(d1), false ); // adjusts to the last/next businessdays assert_eq!( cal.to_bday(d1, false), NaiveDate::from_ymd(2018, 11, 23) ); assert_eq!( cal.to_bday(d1, true) , d2 ); // advances a number of business days assert_eq!( cal.advance_bdays(d0, 2), d2 ); assert_eq!( cal.advance_bdays(d2, -2), d0 ); // returns the number of business days between dates assert_eq!( cal.bdays(d0, d2), 2); assert_eq!( cal.bdays(d2, d0), -2);
HolidayCalendarCache
As a motivation, this example might take some time to finish.
use chrono::NaiveDate; use bdays::HolidayCalendar; let cal = bdays::calendars::brazil::BRSettlement; let d0 = NaiveDate::from_ymd(2001, 2, 1); let d1 = NaiveDate::from_ymd(2100, 2, 1); for _i in 0..30 { cal.bdays(d0, d1); }
You can use HolidayCalendarCache
to perform fast business days calculation
for a given range of dates.
use chrono::NaiveDate; use bdays::HolidayCalendar; let cal = bdays::HolidayCalendarCache::new( bdays::calendars::brazil::BRSettlement, NaiveDate::from_ymd(1980, 1, 1), NaiveDate::from_ymd(2100, 12, 31) ); let d0 = NaiveDate::from_ymd(2001, 2, 1); let d1 = NaiveDate::from_ymd(2100, 2, 1); for _i in 0..30 { cal.bdays(d0, d1); }
Modules
calendars | A set of holiday calendars built into bdays crate. |
easter | Algorithms to calculate easter dates. |
Structs
HolidayCalendarCache | Caches business days calculation for a given holiday calendar
and a given range of dates. Implements the |
Traits
HolidayCalendar | Abstraction for a Holiday Calendar. |
Functions
is_weekday | Returns |
is_weekend | Returns |