我正在尝试使用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的问题但却无法理解如何解决上述问题。请建议。
答案 0 :(得分:2)
看起来问题出在%9N上 - 它不受支持。我将%9N更改为%N并且解析成功 http://ruby-doc.org/stdlib-1.9.3/libdoc/date/rdoc/DateTime.html指定格式,如%3N,%9N等,用于解析毫秒,纳秒......但它似乎不起作用。 感谢tadman怀疑这个说明符。