我对DateTime.strptime做错了什么?

我的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 `' 

看起来你对strptime的格式指令感到困惑。 注意%Mformat两次,一次代表月份,下一次代表分钟?

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

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

%M表示分钟[00,59]

%m表示月份数[01,12]

这应该工作:

 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 

这是一个strptime参考

尝试使用

datetime.to_date.strftime(format)

要么

datetime.to_time