2016-09-29 30 views
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但不明白如何解决以上。请建议。

+0

'%9N'?那是什么?当调试像这样的问题开始删除的东西,直到它的工作,然后把东西,直到它休息。然后你发现你的问题代码。 – tadman

+1

@tadman:%9N指定此处的值为纳秒,宽度为9位。我尝试像解析日期等差异组合,但strptime根本不工作。检查了strptime的文档,但看起来像我的用法是正确的,所以不清楚错误在哪里。 –

+1

@tadman:看起来你指出的是正确的。 %9N看起来并不支持,尽管它在这里提到支持 - http://ruby-doc.org/stdlib-1.9.3/libdoc/date/rdoc/DateTime.html。当我将%9N更改为%N时,解析成功。谢谢。 –

回答