2013-09-22 5 views
19

これはシンプルにする必要があります(おそらく何かが分かりません)が、確かだと思いますが...私はミリ秒のデータベース文字列を持っています。数字の電話.to_dateは私の友人だろうが、それは奇妙なエラーを投げている。ミリ秒を書式付きの日付に変換する

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:invalid date'を返します。 – 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(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

関連する問題