1 个不稳定版本

0.1.0 2022年10月4日

#526日期和时间

MIT 许可证

18KB
237

Workflow Status Maintenance

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