[Dbix-class] Pointless update on a date field
Richard Jones
ra.jones at dpw.clara.co.uk
Tue Sep 18 22:05:14 GMT 2007
Matt S Trout wrote:
>> I have:
>> my ($yr, $month, $day) = Date::Calc::Decode_Date_EU($date);
>> return DateTime->new( year => $yr, month => $month, day => $day);
>
> There's almost certainly a DateTime::Format module that'll do better than
> that - the strptime one for a start. Trying to use Date::Calc stuff to get
> to DateTime objects is always going to be more work since you're now hand
> linking two separate projects with incompatible APIs.
>
> I often use Time::ParseDate which gets me an epoch value then construct a
> DateTime object from that (and it'll usually DWIM however the date's supplied)
>
Time::ParseDate works nice, providing dates are >= epoch (1970-01-01).
But it's not much use for dates of birth, at least for an adult
population. For a date before 1970, Time::ParseDate parsedate() does
generate the $no_of_seconds_since_epoch (a negative number), but
DateTime->from_epoch( epoch => $no_of_seconds_since_epoch ) dies as it
seems unable to handle a negative number of seconds.
DateTime::Format::Strptime *can* handle dates before the epoch, but it
needs the date pattern specifying, thus lacking the flexibility provided
by Date::Calc::Decode_Date_EU.
So, it seems Date::Calc is a better option for generating a DateTime
object from a form field where the user is not restricted to a
particular date format.
--
Richard Jones
More information about the DBIx-Class
mailing list