Closed droundy closed 6 years ago
Currently, you can do that by truncating the value. I.e. to skip fracional seconds, use:
let truncated = Duration::new(original_duration.as_secs(), 0)
To show days:
let truncated = Duration::new((original_duration.as_secs() / 86400)*86400, 0)
In this scenario, an application chooses the granularity, though. And I don't think there is one size fits all approach for that. I.e. one app may show just the number of days when the duration is > 24 hours, and the other could print "1day 8h" up to 5 days.
Currently, the priority of the library is being extremely stable, as it's used in env_logger which is used for every other rust program. So I don't think we can afford to add such functionality since I expect it to be backed in multiple iterations. However, we may add one eventually.
What do you think?
If I have to do the truncation myself then humantime isn't gaining my anything. That's fine, it's just a few lines of code that I have copied from c++ project to project for years. I just thought I'd mention it as a useful human friendly time feature missing from the library.
Yes, it's easy as long as you solving a very specific problem. And much harder when you're trying to make a library suitable for a lot of users with different use cases. So closing this for now.
A relatively simple method that allows specifying the maximum amount of units would be very handy.
Eg format_duration_with_depth(my_duration, 1)
1 would mean only the largest unit (3 years
, 7 months
, ...) 2 the two largest (3 years, 2 months
, 1 month, 7 days
, ...).
Well that's interesting. But different kinds of rounding might also be needed for this case.
@tailhook I have the following code:
let val1 = Duration::from_secs_f32(30.0);
println!("{}", format_duration(val1).to_string());
and it produces:
30s 1us 24ns
Who to blame? :) ps. I cannot use Duration::new because sometimes i need eg 2.5sec...
Filled a bug: https://github.com/rust-lang/rust/issues/90225
Yes, that's a duration constructor error, not formatting issue.
When I saw the title "humantime", I thought I'd have something that I could use to give a friendly output of how long my program has run (i.e. when it's been running for 36 days, I don't care about picoseconds).
Would adding that as a feature be of interest?