I’d like to happily introduce Duration, the package for managing
timespan durations. Have you ever been in a situation where you wanted
to print a human-readable representation of a duration, maybe
something like “4 days, 20 minutes and 8 seconds”?
Well, Duration gives you this functionality. I have written a detailed
wiki article at http://wiki.rubyonrails.org/rails/pages/Duration where
you can read about how to install and use Duration.
The current version is 0.0.4 and is quite stable. If you find any
bugs, please email me the bug with a relevant email subject.
Any feature requests should be sent to my email as well, as I am very
interested in to hear and possibly implement what you as the user
would feel would enhance Duration.
you can read about how to install and use Duration.
Matt
You mention that it can convert number of days/weeks into months. How
do
you deal with the fact that a “month” doesn’t have a standard number of
days? Do you do as the Rails extension does by assuming a fixed number,
or
some other form of trickery?
Since durations are only based on timespans of fixed lengths, they do
not work relatively. So there is no time-detection magic to determine
the days in a given month, because also durations don’t distinguish
between what month it is (whether it be January or Feburary).
BigDuration, the class that supports years and months will assume 30
days as 1 month, and 12 months as 1 year.
some other form of trickery?
could keep a list holding the number of days in a month (in the case
–
Jeremy T. [email protected]
Duration and BigDuration are separate because BigDuration
independantly deals with years and months. Duration, when given a year
or a month will automatically change those to the number of weeks. I
wanted to strictly limit Duration to consistent numbers (weeks, days,
hours, minutes, seconds) and BigDuration to the inconsistent numbers
(months).
not work relatively. So there is no time-detection magic to determine
the days in a given month, because also durations don’t distinguish
between what month it is (whether it be January or Feburary).
BigDuration, the class that supports years and months will assume 30
days as 1 month, and 12 months as 1 year.
Just to add a little bit here, in Io, our Duration module doesn’t
know anything about months at the moment, instead adding up days. It
could keep a list holding the number of days in a month (in the case
of february, if a leap year is detected, replace the second item in
the list (28) with 29). Now that extension is pretty easy, but right
now we only keep track of years, days, hours, and so on. You might
consider doing something similar. It’s fairly straight forward.
Also, out of curiosity, why have two Duration classes? I can’t see
how BigDuration would be required, perhaps could you elaborate a little?
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.