我对DateTime.strptime做错了什么?

Art*_*hur 16 ruby datetime

我的ruby程序说当我这样做时,我的日期无效:

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

DateTime.strptime(time, format)
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

format = "%D/%M/%Y %H:%M:%S:3"
Run Code Online (Sandbox Code Playgroud)

我得到的就是:

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>'
Run Code Online (Sandbox Code Playgroud)

mic*_*ael 25

看起来你对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
Run Code Online (Sandbox Code Playgroud)

这是一个strptime参考

  • 我发现http://strfti.me/非常适合构建这些格式字符串. (8认同)