develooper Front page | perl.datetime | Postings from January 2006

DateTime::Duration Presentation

Thread Next
From:
David Wheeler
Date:
January 8, 2006 14:30
Subject:
DateTime::Duration Presentation
Message ID:
69BC8BC3-7D13-4F85-8B74-BF80E70FD700@kineticode.com
Howdy,

I'm integrating duration objects into an app I'm building, but have a  
bit of a problem using DateTime::Duration objects. The problem is this:

Say that a user selects a duration of "2 hours" for the duration in a  
Web form and saves it. The next time the user accesses that Web form,  
it won't say that the duration is "2 hours", but "120 minutes." This  
is inconsistent with what the user put in and how s/he thinks about it.

Now, I recognize that most users will be able to glance at something  
like that and see that some simple multiplication has been done. But  
I pity the user who enters a duration of "23 hours 59 minutes",  
because the next time they see the form, it will read, "1439  
minutes". ETOOMUCHMATH!

Of course I understand that DateTime::Duration normalizes dates and  
times in order to correctly perform date math; however, it's annoying  
that there's no way to recover the actual arguments to new() or  
settings added via add(). In my mind, a DateTime::Duration object  
would always give me back the dates and times I gave to it rather  
than some simplification of it, but then it would only use the  
simplifications for date math (in deltas, I guess).

It may be too late to break compatibility ($du->hours currently  
returns 0 for "23 hours 59 seconds"), but if there was perhaps a way  
to get at the settings as they were specified, rather than how they  
will be used for date math, it will very much make things simpler for  
anyone who needs to manage a duration presentation widget.

The normalization stuff in DateTime::Format::Duration gets us part of  
the way there, but not quite, as if I say, "23 hours, 90 minutes", it  
will return "24 hours 29 minutes", which is not quite the same as  
what was initially specified.

At any rate, does this make sense to folks? If so, I'd be willing to  
hack something into DateTime::Duration to support this. Comments?

Thanks,

David

Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About