1 个不稳定版本
0.1.0 | 2022年10月4日 |
---|
#526 在 日期和时间
18KB
237 行
business
一个用于进行商业日计算的库。它是 GoCardless 的 business Ruby 钩子的 Rust 实现。
让我们直接从示例开始。更多详情,请参阅 Calendar
。
use chrono::NaiveDate;
let xmas = NaiveDate::from_ymd(2020, 12, 25); // Friday
let cal = business::Calendar::with_holidays(&[xmas]);
assert_eq!(cal.is_business_day(xmas), false);
// The earliest business day
assert_eq!(cal.roll_forward(xmas), NaiveDate::from_ymd(2020, 12, 28));
let xmas_eve = NaiveDate::from_ymd(2020, 12, 24);
assert_eq!(cal.is_business_day(xmas_eve), true);
// Skips over weekend and business holidays
assert_eq!(cal.add_business_days(xmas_eve, 2), NaiveDate::from_ymd(2020, 12, 29));
从 YAML 构建 Calendar
YAML 必须采用以下格式
# Defaults to Mon-Fri if omitted
working_days:
- monday
- tuesday
- wednesday
- thursday
- friday
# ISO 8601 dates, defaults to no holidays if omitted
holidays:
- 2017-12-25
- 2017-12-26
可以这样构建一个日历
let yml = std::fs::read_to_string("examples/basic/cal.yml").unwrap();
let cal: Calendar = serde_yaml::from_str(&yml).unwrap();
依赖关系
~2.8–4MB
~76K SLoC