develooper Front page | perl.datetime | Postings from March 2012

Re: Error with the leap year

Thread Previous | Thread Next
From:
Jon Bjornstad
Date:
March 2, 2012 13:48
Subject:
Re: Error with the leap year
Message ID:
A45E0861-FC1D-4351-99DB-E27B5DE351DE@vindicia.com
I agree with the idea of adding caveats to the POD for using the set_* methods.
I had a colleague who tried to add 4 days to a DateTime like so:

    $dt->set_day($dt->day + 4)

And it worked fine in the beginning of the month.
This is similar to the erroneous use of set_year below.

Of course, no matter how clearly or thoroughly a document is written
there will always be someone that will misread and misuse it.


On Mar 2, 2012, at 12:32 PM, Michael G Schwern wrote:

> On 2012.3.2 11:17 AM, Dave Rolsky wrote:
>> However, I will point out that what you were doing is weird. If you want to do
>> DateTime math, you need to use ->add and ->subtract (although these can _also_
>> come up with invalid datetimes in the face of DST changes). The DST issue is
>> documented pretty clearly in the "How Datetime Math Works" section of the docs.
> 
> While there may be a section about DateTime math, there's little in the docs
> about set caveats.  It's non-obvious that $dt->set_year( $dt->year + 1 ) is
> significantly different than $dt->add( years => 1 ) or that there's anything
> wrong with using set in that manner.  There needs to be a warning or pointer
> in the set docs, because a user has no motivation to fish further.
> 
> I'd suggest a section about when to use set_* and when to use add_* and what
> their caveats are.  Put pointers to it in the set_* and add_* documentation.
> 
> 
> -- 
> 10. Not allowed to purchase anyone's soul on government time.
>    -- The 213 Things Skippy Is No Longer Allowed To Do In The U.S. Army
>           http://skippyslist.com/list/


Thread Previous | 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