Как всегда показывать миллисекунды при анализе даты и времени с помощью chrono в rust?

#datetime #rust #datetime-format

#дата и время #Ржавчина #datetime-формат

Вопрос:

Я пытаюсь отформатировать chrono::NaiveDate вот так: %Y-%m-%dT%H:%M:%S%.f

Согласно третьему примеру в документации, я ожидал, что это будет работать следующим образом:

 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.000 результата выводится это 2015-07-01T00:00:00 .

Игровая площадка Rust здесь

По-видимому, миллисекунды включаются только в том случае, если они не равны нулю:

 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"));
}
 

есть ли возможность всегда включать их?

Ответ №1:

Вы можете использовать в .3f качестве последнего спецификатора. Это похоже на, .%f но выровнено по левому краю, но фиксировано до длины 3

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