如何在 Chrono UTC 上添加天数?

61

我正在尝试找到向Chrono UTC添加天数的首选方法。 我想将137天添加到当前时间:

我正在寻求在Chrono UTC中添加天数的最佳方式。我希望能够将137天添加到当前时间:

let dt = UTC::now();
2个回答

88

只需要使用Duration和相应的操作符

use chrono::{Duration, Utc};

fn main() {
    let dt = Utc::now() + Duration::days(137);

    println!("today date + 137 days {}", dt);
}

在游乐场上测试


7
谢谢你,我忘记了算术部分。伟大的社区,伟大的箱子。然而,文档格式感觉像在阅读MSDN。感谢您提供正确而简单的答案,比我第11次阅读这些文档后所做的要好得多 :-) - schmoopy
哇!这比momentJS好多了。 - Gus
值得注意的是,"+ Duration" 函数适用于 DateTime<_>,但反过来则不成立,所以虽然 Utc::now() + Duration::days(137) 是可行的 但反向操作则不行: Duration::days(137) + Utc::now() - capveg

46

我只是想改进@Stargateur的答案。无需使用time库,因为chrono库中有Duration结构:

extern crate chrono;

use chrono::{Duration, Utc};

fn main() {
    let dt = Utc::now() + Duration::days(137);

    println!("{}", dt);
}

在游乐场上进行的另一个测试


1
请注意,目前 Duration 只是 time::Duration 的包装器,直接使用 Duration 可能会导致破坏性更改。 - Stargateur
11
如果在chrono和time crates之间出现了重大变化,我认为使用chrono的持续时间(Duration)可以让我依赖chrono crate来解决问题,因此我只需更新那个依赖而不必自己进行代码更改。 - Peter Hall
2
截至2020年5月,实际上需要使用chrono::Duration,因为time::Duration没有实现加法特性。 - Marcus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接