[Vienna-pm] date::parse und dates vor 1959
max demmelbauer
prozessor13 at gmx.net
Wed Feb 27 03:01:25 PST 2008
hallo.
ich bin jetzt auf einen komischen bug in Date::Parse gestossen:
alle datum vor 1959 koennen nicht geparst werden ( print
str2time("1958-01-01 23:59:59") ), obwohl date::parse time::local
verwendet, und time::local keine probleme damit hat. nach langem
hinundher bin ich jetzt draufgekommen, das Date::Parse ein two-digit-
year Time::Local uebergibt (also 58 fuer das jahr 1958), und
time::local das als jahr 2058 interpretiert! in der Time::Local doku
hab ich dann das gefunden:
• Years in the range 0..99 are interpreted as shorthand for years in
the rolling "current century," defined as 50 years on either side of
the current year. Thus, today, in 1999, 0 would refer to 2000, and 45
to 2045, but 55 would refer to 1955. Twenty years from now, 55 would
instead refer to 2055. This is messy, but matches the way people
currently think about two digit dates. Whenever possible, use an
absolute four digit year instead.
also der fix fuer dieses problem ist einfach, bei date::parse in der
zeile 274
timelocal($ss,$mm,$hh,$day,$month,1900+$year);
anstatt
timelocal($ss,$mm,$hh,$day,$month,$year);
aber ich versteh nicht, dass das so schwammig programmiert ist! oder
verwendet das modul niemand ausser mir? soll ich jetzt auf den live-
servern Date/Parse.pm patchen, oder besser ein anderes modul verwenden
(wenn ja welches verwendets ihr?)
lg. max.
More information about the Vienna-pm
mailing list