Improve handling of negative durations
This commit is contained in:
parent
38a85502ed
commit
c1d430e61a
@ -430,11 +430,14 @@ struct chrono_formatter {
|
||||
|
||||
explicit chrono_formatter(FormatContext& ctx, OutputIt o,
|
||||
std::chrono::duration<Rep, Period> d)
|
||||
: context(ctx),
|
||||
out(o),
|
||||
val(d.count()),
|
||||
s(std::chrono::duration_cast<seconds>(d)),
|
||||
ms(std::chrono::duration_cast<milliseconds>(d - s)) {}
|
||||
: context(ctx), out(o), val(d.count()) {
|
||||
if (d.count() < 0) {
|
||||
d = -d;
|
||||
*out++ = '-';
|
||||
}
|
||||
s = std::chrono::duration_cast<seconds>(d);
|
||||
ms = std::chrono::duration_cast<milliseconds>(d - s);
|
||||
}
|
||||
|
||||
int hour() const { return to_int(mod((s.count() / 3600), 24)); }
|
||||
|
||||
|
@ -310,4 +310,8 @@ TEST(ChronoTest, LargeDuration) {
|
||||
EXPECT_EQ("40", fmt::format("{:%S}", std::chrono::duration<double>(1e20)));
|
||||
}
|
||||
|
||||
TEST(ChronoTest, NegativeDuration) {
|
||||
EXPECT_EQ("-00:01", fmt::format("{:%M:%S}", std::chrono::duration<double>(-1)));
|
||||
}
|
||||
|
||||
#endif // FMT_STATIC_THOUSANDS_SEPARATOR
|
||||
|
Loading…
Reference in New Issue
Block a user