2016-09-29 28 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時,解析成功。謝謝。 –

回答