0
我想解析包含一个字段与日期时间字符串的传入csv文件使用fluentd(用ruby编写),但它提供了自定义时间格式的错误。红宝石strptime格式抛出自定义格式错误“%d-%b-%y%i%%%s%9N%p”
为了检查我是否使用了正确的格式,我写了示例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'?那是什么?当调试像这样的问题开始删除的东西,直到它的工作,然后把东西,直到它休息。然后你发现你的问题代码。 – tadman
@tadman:%9N指定此处的值为纳秒,宽度为9位。我尝试像解析日期等差异组合,但strptime根本不工作。检查了strptime的文档,但看起来像我的用法是正确的,所以不清楚错误在哪里。 –
@tadman:看起来你指出的是正确的。 %9N看起来并不支持,尽管它在这里提到支持 - http://ruby-doc.org/stdlib-1.9.3/libdoc/date/rdoc/DateTime.html。当我将%9N更改为%N时,解析成功。谢谢。 –