4 个版本

0.1.3 2022 年 9 月 27 日
0.1.2 2021 年 7 月 21 日
0.1.1 2021 年 7 月 21 日
0.1.0 2019 年 9 月 25 日

#90日期和时间

Download history 15493/week @ 2024-03-14 19522/week @ 2024-03-21 18352/week @ 2024-03-28 17143/week @ 2024-04-04 19231/week @ 2024-04-11 18850/week @ 2024-04-18 16883/week @ 2024-04-25 16006/week @ 2024-05-02 19886/week @ 2024-05-09 18877/week @ 2024-05-16 22308/week @ 2024-05-23 25216/week @ 2024-05-30 26470/week @ 2024-06-06 26744/week @ 2024-06-13 29415/week @ 2024-06-20 29244/week @ 2024-06-27

116,564 每月下载量
用于 91 个 crate (4 直接)

MIT 许可证

21KB
373

now

jinzhu/now 启发的 chrono 时间工具集

GitHub Workflow Status Crates.io docs.rs Coverage Status Crates.io (recent) Crates.io

安装

将依赖添加到 Cargo.toml

# Cargo.toml
[dependencies]
now = "0.1"

或者,您可以使用 cargo-edit 通过

cargo add now

使用

特质 TimeZoneNow 提供了对 chrono::Timezone 的方便且易于阅读的方法

use chrono::FixedOffset;
use now::TimeZoneNow;

let offset = FixedOffset::east(60 * 60 * 8);

offset.now();                   // 2021-07-21T12:48:58.626947+08:00

offset.beginning_of_minute();   // 2021-07-21T12:48:00+08:00
offset.beginning_of_hour();     // 2021-07-21T12:00:00+08:00
offset.beginning_of_day();      // 2021-07-21T00:00:00+08:00
offset.beginning_of_week();     // 2021-07-19T00:00:00+08:00
offset.beginning_of_month();    // 2021-07-01T00:00:00+08:00
offset.beginning_of_quarter();  // 2021-07-01T00:00:00+08:00
offset.beginning_of_year();     // 2021-01-01T00:00:00+08:00

offset.end_of_minute();         // 2021-07-21T12:48:59.999999999+08:00
offset.end_of_hour();           // 2021-07-21T12:59:59.999999999+08:00
offset.end_of_day();            // 2021-07-21T23:59:59.999999999+08:00
offset.end_of_week();           // 2021-07-25T23:59:59.999999999+08:00
offset.end_of_month();          // 2021-07-31T23:59:59.999999999+08:00
offset.end_of_quarter();        // 2021-09-30T23:59:59.999999999+08:00
offset.end_of_year();           // 2021-12-31T23:59:59.999999999+08:00

并且特质 DateTimeNow 支持以下方法 chrono:DateTime<T:Timezone>

use now::DateTimeNow;

let time = Utc::now();          // 2021-07-21T05:18:25.011480Z

time.beginning_of_minute();     // 2021-07-21T05:18:00Z
time.beginning_of_hour();       // 2021-07-21T05:00:00Z
time.beginning_of_day();        // 2021-07-21T00:00:00Z
time.beginning_of_week();       // 2021-07-19T00:00:00Z
time.beginning_of_month();      // 2021-07-01T00:00:00Z
time.beginning_of_quarter();    // 2021-07-01T00:00:00Z
time.beginning_of_year();       // 2021-01-01T00:00:00Z

time.end_of_minute();           // 2021-07-21T05:18:59.999999999Z
time.end_of_hour();             // 2021-07-21T05:59:59.999999999Z
time.end_of_day();              // 2021-07-21T23:59:59.999999999Z
time.end_of_week();             // 2021-07-25T23:59:59.999999999Z
time.end_of_month();            // 2021-07-31T23:59:59.999999999Z
time.end_of_quarter();          // 2021-09-30T23:59:59.999999999Z
time.end_of_year();             // 2021-12-31T23:59:59.999999999Z

因为 now 基于 chrono,所以像 闰年昼夜时间(由 chrono-tz 提供) 这样的功能也由 now 支持。

let naive_date_time = NaiveDate::from_ymd(2024, 2, 10).and_hms(0, 0, 1);
let date_time: DateTime<Utc> = Utc.from_local_datetime(&naive_date_time).unwrap();
let time = date_time.end_of_month();

assert_eq!(29, time.day()); // 2024 is leap year

依赖

~1–7.5MB
~26K SLoC