gpt4 book ai didi

rust - 如何从两个 DateTime/NaiveDateTime 获取持续时间?

转载 作者:行者123 更新时间:2023-11-29 08:14:03 24 4
gpt4 key购买 nike

我正在使用 chrono crate

我在 i64 中有日期,我可以使用 NaiveDateTime::from_timestamp 获取 NaiveDateTime

我有 Local::now() 当前时间,我可以使用 .timestamp() 获取 i64

但我仍然不明白如何获取 my_time - current_timeDuration,因为如果我那样尝试,它会告诉我 Sub 没有实现

如果我在 i64 时间戳中遇到差异,如何将其转换为 Duration

例如我想要类似的东西,但那里没有实现 sub

let uEnd = NaiveDateTime::from_timestamp(end64, 0);
let dtEnd = uEnd.sub(Local::now());

最佳答案

这两种日期时间类型不兼容,因为 NaiveDateTime缺少时区。在这种情况下,因为您使用 NaiveDateTime::from_timestamp 获得了它,您可以将其转换为 DateTime<Utc>首先,然后得到与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);

Playground


chrono 的 future 版本(在 0.4.1 之后)将支持减法作为调用 .signed_duration_since 的替代方法, 只要两个操作数具有相同的时区类型。 PR #237因此,最终可以这样写:

let diff = now.with_timezone(&Utc) - other_dt;

关于rust - 如何从两个 DateTime/NaiveDateTime 获取持续时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49487722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com