在 Rust 中使用 chrono 解析日期时间时如何始终显示毫秒?

How to always show milliseconds when parsing datetime with chrono in rust?

我正在尝试像这样格式化 chrono::NaiveDate%Y-%m-%dT%H:%M:%S%.f

根据 documentation 中的第三个示例,我希望它能像这样工作:

use chrono::NaiveDate;

fn main() {
    let date = NaiveDate::from_ymd(2015, 7, 1).and_hms_milli(0, 0, 0, 0);
    println!("{}", date.format("%Y-%m-%dT%H:%M:%S%.f"));
}

然而,这打印了 2015-07-01T00:00:00.

而不是所需的输出 2015-07-01T00:00:00.000

Rust Playground is here

显然,如果毫秒不为零,则只包含毫秒数:

use chrono::NaiveDate;

fn main() {
    let date = NaiveDate::from_ymd(2015, 7, 1).and_hms_milli(0, 0, 0, 1);
    println!("{}", date.format("%Y-%m-%dT%H:%M:%S%.f"));
}

是否有始终包含它们的选项?

您可以使用 .3f as the last specifier。这类似于.%f 但左对齐但固定为3

的长度
println!("{}", date.format("%Y-%m-%dT%H:%M:%S%.3f"));