我正在使用 chrono 板条箱
我已经约会了i64,我可以NaiveDateTime和NaiveDateTime::from_timestamp
我有Local::now()当前时间,我可以i64和.timestamp()
但是我仍然无法理解如何获得Duration,my_time - current_time因为它告诉我如果我这样尝试就没有实现 Sub
如果我在 i64 时间戳中得到 diff 如何将其转换为Duration?
例如,我想要类似的东西,但 sub 没有在那里实现
let uEnd = NaiveDateTime::from_timestamp(end64, 0);
let dtEnd = uEnd.sub(Local::now());
Run Code Online (Sandbox Code Playgroud)
这两种日期时间类型不兼容,因为NaiveDateTime缺少时区。在这种情况下,由于您使用 获得它NaiveDateTime::from_timestamp,因此您可以DateTime<Utc>先将其转换为 a ,然后使用 获得差异signed_duration_since。
let now = Local::now();
let naive_dt = NaiveDate::from_ymd(2018, 3, 26).and_hms(10, 02, 0);
let other_dt = DateTime::<Utc>::from_utc(naive_dt, Utc);
let diff = now.signed_duration_since(other_dt);
Run Code Online (Sandbox Code Playgroud)
未来版本chrono(0.4.1 之后)将支持减法作为调用的替代方法.signed_duration_since,只要两个操作数具有相同的时区类型。PR #237因此,人们最终将能够这样写:
let diff = now.with_timezone(&Utc) - other_dt;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1012 次 |
| 最近记录: |