无法让Ruby strptime工作

时间:2013-07-18 18:36:08

标签: ruby datetime strptime

我目前有

format = '%d%m%Y:%H:%M:%S'
date_time = '30/Jun/2013:07:38:27'

puts DateTime.strptime(date_time, format)

返回

ArgumentError: invalid date
    from (irb):95:in 'strptime'
    from (irb):97
    from (irb):usr/bin/irb:12:in '<main>'

我该如何做到这一点?

谢谢!

2 个答案:

答案 0 :(得分:4)

您的格式字符串与您实际使用的格式不符。 %m是零填充月份(01..12),而您正在使用Jun,这需要%b。您还需要添加斜杠以使格式匹配。

全是documented

require 'date'

format = '%d/%b/%Y:%H:%M:%S'
date_time = '30/Jun/2013:07:38:27'
DateTime.strptime(date_time, format)
# => #<DateTime: 2013-06-30T07:38:27+00:00 ((2456474j,27507s,0n),+0s,2299161j)>

答案 1 :(得分:1)

formatdate_time中的内容不匹配。特别是,您在date_time中有斜杠和缩写的月份名称。使用它。

format = '%d/%b/%Y:%H:%M:%S'