如何将 chrono::Datetime 舍入到最接近的秒?

Sam*_* G. 6 datetime rust c++-chrono rust-cargo

我想使用 chrono crate 将当前时间四舍五入到最接近的秒,但我不知道如何剥离或舍入 chrono::UTC.now().

似乎没有任何操作可以修改现有的`DateTime。

chrono::UTC.now()
Run Code Online (Sandbox Code Playgroud)

返回: 2019-05-22T20:07:59.250194427Z

我想得到: 2019-05-22T20:07:59.000000000Z

我将如何以最有效的方式做到这一点,而无需将DateTime值分解为其组件并重新创建它?

Leś*_*ajs 5

使用with作为参数的round_subsecs方法0。

use chrono::prelude::*;

fn main() {
    let utc: DateTime<Utc> = Utc::now().round_subsecs(0);
    println!("{}", utc);
}
Run Code Online (Sandbox Code Playgroud)

结果是:

use chrono::prelude::*;

fn main() {
    let utc: DateTime<Utc> = Utc::now().round_subsecs(0);
    println!("{}", utc);
}
Run Code Online (Sandbox Code Playgroud)

  • “round_subsecs(6)”也可以通过“use chrono::{SubsecRound, Utc};”启用。此功能对于具有 6 位数字的 Postgres 类型“TIMESTAMPTZ”非常有用,而不是通常的具有 9 位数字的“chrono”类型“DateTime&lt;Utc&gt;”,导致“assert_eq!(...)”等失败。 (3认同)