Hallo allerseits,
ich verwende die Funktion Time::utc, um aus day, month, year einen
Datumswert zu erzeugen. Beim 29. Februar der Jahre 1900 u. 2003 (beides
keine Schaltjahre) verhält sich utc unterschiedlich:
29.2.1900: -> Ausnahme
29.2.2003: -> 1.3.2003 !!!
Hier der Source, mit dem ich getestet habe
(ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32])
def CheckLeapYear(y, m, d)
begin
datum = Time.utc(y, m, d)
rescue
puts y.to_s + ‘-’ + m.to_s + ‘-’ + d.to_s + ’ is not valid.’
else
puts y.to_s + ‘-’ + m.to_s + ‘-’ + d.to_s + ’ -> ’ + datum.to_s
end
end
CheckLeapYear(1900, 2, 29)
CheckLeapYear(2003, 2, 29)
Hier das Ergebnis:
1900-2-29 is not valid.
2003-2-29 -> Sat Mar 01 00:00:00 UTC 2003
Kann das jemand erklären ?
Joachim