我对DateTime.strptime做错了什么?

时间:2011-03-21 16:48:24

标签: ruby datetime

我的ruby程序说我的日期无效:

format = "%D/%M/%Y %H:%M:%S:3N"
date = "21/03/2011 16:39:11.642"

DateTime.strptime(time, format)

我也试过这个:

format = "%D/%M/%Y %H:%M:%S:3"

我得到的就是这个:

ArgumentError: invalid date    
        from /usr/local/lib/ruby/1.9.1/date.rb:1688:in `new_by_frags'    
        from /usr/local/lib/ruby/1.9.1/date.rb:1713:in `strptime'
        from (irb):12  
        from /usr/local/bin/irb:12:in `<main>'

2 个答案:

答案 0 :(得分:25)

看起来你的strptime格式指令很混乱。注意%M format%D中的表现方式,一次代表月份,下一次代表分钟?

%m / %d / %y表示日期为%d

%M表示该月的某一天[01,31]

%m表示分钟[00,59]

format = "%d/%m/%Y %H:%M:%S" date_time = "21/03/2011 16:39:11.642" puts DateTime.strptime(date_time, format) #=> 2011-03-21T16:39:11+00:00 表示月份编号[01,12]

这应该有效:

{{1}}

这是strptime reference

答案 1 :(得分:0)

尝试使用

datetime.to_date.strftime(format)

datetime.to_time