how to round durations to most significant unit ? (5 secs, 889 ms, and 811 μs => 5 secs)
Jonathan M Davis
jmdavisProg at gmx.com
Fri Feb 14 14:14:03 PST 2014
On Thursday, February 13, 2014 23:37:13 Timothee Cour wrote:
> Is there a function to do this?
> If not and I/someone writes it, is there interest to add it to std.datetime?
>
> Duration t = ...;
> t.to!string => 5 secs, 889 ms, and 811 μs
> t.round.to!string => 5 secs
>
> t=...;
> t.to!string => 889 ms, and 811 μs
> t.round.to!string => 889 secs
>
> Use case: shorter logs.
There is no function for that, and no one's ever asked for anything like it,
so I don't know how worthwhile it is to add. However, one possible
implementation would be
auto roundToLargest(Duration d)
{
foreach(units; TypeTuple!("weeks", "days", "hours", "minutes",
"seconds", "msecs", "usecs"))
{
immutable value = d.total!units();
if(value != 0)
return dur!units(value);
}
return d;
}
- Jonathan M Davis
More information about the Digitalmars-d-learn
mailing list