diff --git a/include/fmt/chrono.h b/include/fmt/chrono.h index 0185bb81df14..11565d6380ec 100644 --- a/include/fmt/chrono.h +++ b/include/fmt/chrono.h @@ -1624,10 +1624,9 @@ class tm_writer { write2(tm_min()); } void on_iso_time() { - char buf[8]; - write_digit2_separated(buf, to_unsigned(tm_hour()), to_unsigned(tm_min()), - to_unsigned(tm_sec()), ':'); - out_ = copy_str(std::begin(buf), std::end(buf), out_); + on_24_hour_time(); + *out_++ = ':'; + on_second(numeric_system::standard, pad_type::unspecified); } void on_am_pm() { diff --git a/test/chrono-test.cc b/test/chrono-test.cc index cdd21319be2c..c7edaff2b185 100644 --- a/test/chrono-test.cc +++ b/test/chrono-test.cc @@ -904,6 +904,8 @@ TEST(chrono_test, timestamps_sub_seconds) { EXPECT_EQ(fmt::format("{}.{}", strftime_full_utc(t9_sec), t9_sub_sec_part), fmt::format("{:%Y-%m-%d %H:%M:%S}", t9)); + EXPECT_EQ(fmt::format("{}.{}", strftime_full_utc(t9_sec), t9_sub_sec_part), + fmt::format("{:%Y-%m-%d %T}", t9)); const std::chrono::time_point