Ruby on rails ruby strTime格式为自定义格式“抛出错误%d-%b-%y%I.%M.%S.%9N%p“;

Ruby on rails ruby strTime格式为自定义格式“抛出错误%d-%b-%y%I.%M.%S.%9N%p“;,ruby-on-rails,ruby,strptime,Ruby On Rails,Ruby,Strptime,我试图使用fluentd(用ruby编写)解析包含一个带有日期时间字符串的字段的传入csv文件,但它为提供的自定义时间格式抛出了错误 为了检查我是否使用了正确的格式,我编写了示例ruby代码(不是在线ruby IDE使用的ruby程序员),发现当我尝试使用该格式编写时,该格式运行良好,但当我尝试使用该格式读取时,ruby抛出错误: [ code ] require 'time' time = Time.new puts "writing time : " + time.strftime("%

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

为了检查我是否使用了正确的格式,我编写了示例ruby代码(不是在线ruby IDE使用的ruby程序员),发现当我尝试使用该格式编写时,该格式运行良好,但当我尝试使用该格式读取时,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>'  
[代码]
需要“时间”
时间=时间
放入“写入时间:“+time.strftime”(%d-%b-%y%I.%M.%S.%9N%p))
newtime=Time.strtime(“2016年9月29日07.45.45.331680519下午,%d-%b-%y%I.%M.%S.%9N%p”)
输入“读取时间:+newtime”
[输出]
sh-4.3$ruby main.rb
写作时间:2016年9月29日05.47.36.206929933下午
/usr/share/ruby/time.rb:427:在'strtime'中:strtime格式无效-`d-%b-%y%I.%M.%S.%9N%p'(ArgumentError)
从main.rb:10:in`'

我查看了很多帖子,人们发现了strtime的问题,但不知道如何解决上面的问题。请提出建议。

看起来问题出在%9N上-不支持它。我将%9N更改为%N,解析成功。
指定用于分析毫秒、纳秒的格式,如%3N、%9N等。。但它似乎不起作用。
感谢tadman怀疑此说明符。

看起来问题出在%9N上-不支持它。我将%9N更改为%N,解析成功。
指定用于分析毫秒、纳秒的格式,如%3N、%9N等。。但它似乎不起作用。
感谢塔德曼怀疑这个说明符。

%9N
?那是什么?当调试像这样的问题时,开始删除东西直到它工作,然后放回东西直到它损坏。然后您找到了问题代码。@tadman:%9N指定此处的值为纳秒,宽度为9位。我尝试了不同的组合,比如只解析日期等,但strtime根本不起作用。检查了strtime的文档,但我的用法似乎是正确的,所以不清楚错误在哪里。@tadman:看来你指出的是正确的。%9N看起来不受支持,尽管此处将其称为受支持-。当我将%9N更改为%N时,解析成功。谢谢。
%9N
?那是什么?当调试像这样的问题时,开始删除东西直到它工作,然后放回东西直到它损坏。然后您找到了问题代码。@tadman:%9N指定此处的值为纳秒,宽度为9位。我尝试了不同的组合,比如只解析日期等,但strtime根本不起作用。检查了strtime的文档,但我的用法似乎是正确的,所以不清楚错误在哪里。@tadman:看来你指出的是正确的。%9N看起来不受支持,尽管此处将其称为受支持-。当我将%9N更改为%N时,解析成功。谢谢