Project

General

Profile

Actions

Bug #10767

closed

Time.local doesn't raise an exception during the dead hour on DST

Added by sobrinho (Gabriel Sobrinho) over 9 years ago. Updated over 9 years ago.

Status:
Rejected
Target version:
-
ruby -v:
ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-linux-gnu]
[ruby-core:67730]

Description

At the begin of DST ruby is accepting the 0 hour which in fact doesn't exists:

Time.local(2014, 10, 19, 0, 30)
#=> 2014-10-19 01:30:00 -0200

Time.local(2014, 10, 19, 1, 30)
#=> 2014-10-19 01:30:00 -0200

Time.local(2014, 10, 19, 2, 30)
#=> 2014-10-19 02:30:00 -0200

In fact it is returning the next hour for some reason, causing a really strange behaviour:

Time.local(2014, 10, 19, 0, 30) == Time.local(2014, 10, 19, 1, 30)
#=> true

I think it makes more sense to raise an exception as happens when you specify a invalid month, day, hour, minute or second:

Time.local(2014, 10, 19, 1, 60) # 60 minutes doesn't exists
ArgumentError: invalid date

Time.local(2014, 10, 19, 25, 30) # 25 hours doesn't exists
ArgumentError: invalid date

Makes sense? I would be happy to provide a patch.


Related issues 1 (0 open1 closed)

Related to Ruby master - Bug #10588: Invalid DatesRejectedakr (Akira Tanaka)12/11/2014Actions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0