Comments (8)
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?
from humantime.
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.
from humantime.
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.
from humantime.
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
, ...).
from humantime.
Well that's interesting. But different kinds of rounding might also be needed for this case.
from humantime.
@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...
from humantime.
Filled a bug: rust-lang/rust#90225
from humantime.
Yes, that's a duration constructor error, not formatting issue.
from humantime.
Related Issues (20)
- Format from duration to string HOT 7
- 2 tests are failing on 32bit platforms HOT 5
- Improve parse_duration error when missing units HOT 5
- Change link to humantime-serde since serde-humantime seems dead HOT 1
- Feature request `format_rfc3339_weak`. HOT 1
- documentation typo HOT 1
- (Partial) Support for no_std HOT 1
- Different formats?
- Serde support as a cargo feature HOT 1
- Lack of samples HOT 1
- feature request: Allow parsing zero durations with no units
- suggestion: support a const initializer HOT 1
- Only UTC timezone for ISO 8601
- Maintenance Status HOT 3
- Please impl Default for humantime::Duration
- Support fractional durations HOT 5
- Extend format_duration with rounding to milliseconds, seconds, minutes, hours, days, month and years HOT 3
- Windows seems to lack nano Precision
- regex for supported inputs HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from humantime.