[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