2013-09-22 82 views
19

我確定這應該很簡單(可能缺少一些明顯的),但是...我有一個毫秒數據庫字符串,我想在Rails中將其轉換爲US格式的日期。想到調用.to_date將是我的朋友,但它拋出了一個奇怪的錯誤。將毫秒數轉換爲Rails中的格式化日期

article.date => "1379844601000" 

article.date.to_date 
NoMethodError: undefined method `div' for nil:NilClass 

任何人都可以建議正確的方法來做到這一點?

回答

12

使用Date.strptime - 而在此之前,先將其轉換爲秒:

sec = ('1379844601000'.to_f/1000).to_s 
Date.strptime(sec, '%s') 
//Sun, 22 Sep 2013 
+0

這很好,謝謝 - 有什麼方法可以顯示它爲MM-DD-YYYY而不是DAY,DD MMM YYYY? – Nick

+0

使用:'strftime':http://apidock.com/ruby/DateTime/strftime – shem

-1

Time.parse( 「1379844601000」)會給你的日期和時間

+2

這是爲您工作嗎?它給了我'ArgumentError:'1379844601000''中沒有時間信息。 Date.parse給出了'ArgumentError:無效的日期'。 – Nick

+0

它對我來說工作正常 >> Time.parse(「1379844601000」) => Sun Sep 22 16:32:36 +0530 2013 – vigneshre

+2

看起來像它的一個紅寶石版本問題。 Ruby 1.9.x版本沒有這個解析選項。所以,你可以使用Time.strptime()方法或使用像這樣的一些寶石https://github.com/jeremyevans/ruby-american_date – vigneshre

29

將其轉換爲秒(milliseconds/1000)和呼叫Time::at的結果:

Time.at(1379844601000/1000) 
# => 2013-09-22 12:10:01 +0200 

Time::at on ruby-doc.org

24
Time.strptime(milliseconds.to_s, '%Q') 
// %Q - Number of milliseconds since 1970-01-01 00:00:00 UTC. 
+0

這應該是接受的答案 – pungoyal