我在做什么DateTime.strptime错误?

我在做什么DateTime.strptime错误?

问题描述:

我的Ruby程序说我的日期是无效的,当我做到这一点:我在做什么DateTime.strptime错误?

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>' 

看起来你正在对strptime的格式指令感到困惑。请注意0​​在format中是两次,一次代表月份,下一次代表分钟?

%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 reference

+8

我发现http://strfti.me/用于建立这些格式字符串真的很棒。 – opsb 2012-08-30 09:55:29

+0

因此'strftime'和'strptime'的格式字符串符号有不同的含义? – 2013-06-13 05:42:36

+0

谢谢迈克尔。这真的帮了我 – 2013-11-02 17:50:52

尝试使用

datetime.to_date.strftime(format)

datetime.to_time