我在做什么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
答
尝试使用
datetime.to_date.strftime(format)
或
datetime.to_time
我发现http://strfti.me/用于建立这些格式字符串真的很棒。 – opsb 2012-08-30 09:55:29
因此'strftime'和'strptime'的格式字符串符号有不同的含义? – 2013-06-13 05:42:36
谢谢迈克尔。这真的帮了我 – 2013-11-02 17:50:52