如何使用time-rs crate为当前日期时间增加指定秒数
实现time-rs库时间累加100秒的方案
要在PrimitiveDateTime类型的基础时间上累加100秒返回结果,核心是使用time库内置的时间间隔类型完成运算,不能直接写裸值加单位的自定义语法,具体实现如下:
基础通用写法
不需要额外引入扩展特征,兼容性最好,直接调用Duration的构造方法生成100秒的时间间隔即可:
use time::{PrimitiveDateTime as DateTime, Duration}; pub fn after(start: DateTime) -> DateTime { start + Duration::seconds(100) }
直观语义写法
如果你想要更接近注释里start + 100 seconds的自然书写效果,可以引入time库提供的数值扩展特征,直接在整数后调用单位方法生成时间间隔:
use time::PrimitiveDateTime as DateTime; use time::ext::NumericalDuration; pub fn after(start: DateTime) -> DateTime { start + 100.seconds() }
注意事项
- 不要混用Rust标准库的
std::time::Duration,time库的日期时间类型仅和自身导出的Duration实现了加减运算符重载,传入标准库的Duration会直接报编译错误。 - 累加时间时库会自动处理跨分钟、跨小时、跨天的进位逻辑,比如传入的起始时间是当日23:59:30,加100秒会自动计算为次日00:01:10,不需要手动做时间单位换算。
内容的提问来源于stack exchange,提问作者Saurabh
相关产品推荐
相关产品推荐

