Ruby strptime 格式为自定义格式"%d-%b-%y %I.%M.%S.%9N %p"抛出错误



我正在尝试使用fluentd(用ruby编写)解析包含一个字段的日期时间字符串的传入csv文件,但它会为提供的自定义时间格式抛出错误。

为了检查我是否使用正确的格式,我编写了示例ruby代码(不是ruby程序员因此使用在线ruby IDE),并发现当我尝试使用它编写时该格式工作良好,但当我尝试使用此格式阅读时ruby抛出错误:

[ code ]
require 'time'
time = Time.new
puts "writing time : " + time.strftime("%d-%b-%y %I.%M.%S.%9N %p")
newtime = Time.strptime("29-Sep-16 07.45.45.331680519 PM", "%d-%b-%y %I.%M.%S.%9N %p")
puts "reading time : " + newtime
[ output ]
sh-4.3$ ruby main.rb                                                                                                                                    
writing time : 29-Sep-16 05.47.36.206929933 PM                                                                                                          
/usr/share/ruby/time.rb:427:in `strptime': invalid strptime format - `%d-%b-%y %I.%M.%S.%9N %p' (ArgumentError)                                         
    from main.rb:10:in `<main>'  

我检查了许多人们发现strptime问题的帖子,但无法理解如何解决上面的问题。请建议。

看起来问题出在%9N上-它不受支持。我将%9N更改为%N,解析成功。
http://ruby-doc.org/stdlib-1.9.3/libdoc/date/rdoc/DateTime.html指定了%3N、%9N等格式,用于解析毫秒、纳秒等。但这似乎不起作用。感谢tadman怀疑这个说明符

最新更新