Time.parse seems to fail


#1

Hi,

it’s seems to me the function Time.parse has an error:

ok - Time.parse(“12/01/2008”) => 2008-12-01
Error - Time.parse(“01.12.2008”) => 2008-01-12

Or is there an option/timezone I have to chnage, so it will work
correctly?

Greetings Claus-Christian Ude


#2

Ok, some more details:

it’s seems to me the function Time.parse has an error:

ok - Time.parse(“12/01/2008”) => 2008-12-01
Error - Time.parse(“01.12.2008”) => 2008-01-12

Time.parse(“01.12.2008”) => 2008-12-01 whould be correct. I found
already the function _parse in lib/ruby/1.8/date/format.rb. But before I
change in this file, must be really sure, there is no other solution.

mfg


#3

Ok, I have the solution. Here I correct the wrong function of
Date.parse:

class Date
class << self
alias :oldparse :_parse

def _parse(str, comp=false)
  if str =~ /(\d{1,2})\.(\d{1,2})\.(\d\d\d\d)\ (\d{1,2})\:(\d\d)/
    e       = Format::Bag.new
    e.mday  = $1.to_i
    e.mon   = $2.to_i
    e.year  = $3.to_i
    e.hour  = $4.to_i
    e.min   = $5.to_i
    return e.to_hash
  end
  if str =~ /(\d{1,2})\.(\d{1,2})\.(\d\d\d\d)/
    e       = Format::Bag.new
    e.mday  = $1.to_i
    e.mon   = $2.to_i
    e.year  = $3.to_i
    return e.to_hash
  end

  oldparse(str, comp)
end

end
end


#4

2009/5/28 Claus-christian Ude removed_email_address@domain.invalid

Hi,

it’s seems to me the function Time.parse has an error:

ok - Time.parse(“12/01/2008”) => 2008-12-01
Error - Time.parse(“01.12.2008”) => 2008-01-12

My brain does not seem to be working well today, I cannot actually see
what
you are getting at. What would you expect the second one to give and
why?

Colin


#5

On May 30, 8:48 am, Colin L. removed_email_address@domain.invalid wrote:

My brain does not seem to be working well today, I cannot actually see what
you are getting at. What would you expect the second one to give and why?

These things are ofter locale dependant. My european brain expects day
month year, but apparently in the US month ,day, year is more common.
If you are expecting dates in a particular format strptime is useful,
if not some sort of calendary widget is often a better idea.

Fred


#6

Frederick C. wrote:

On May 30, 8:48�am, Colin L. removed_email_address@domain.invalid wrote:
If you are expecting dates in a particular format strptime is useful,
if not some sort of calendary widget is often a better idea.

Fred

Well yes, I already do so (calendar_select_date), but I get in the
controller-function as params the dd.mm.yyyy format. So
update_attributes convert the date automaticly, but it do it wrong
(mm.dd.yyyy), therefor I “repair” the Date.parse-Function.

mfg C-C


#7

On Jun 1, 9:29 am, Claus-christian Ude <rails-mailing-l…@andreas-
s.net> wrote:

(mm.dd.yyyy), therefor I “repair” the Date.parse-Function.

if you’re guarenteed that the format you get in the controller is
going to be dd.mm.yyyy then strptime is probably the easiest way
(although just tearing the string up with a regexp wouldn’t be hard
either)

Fred