2013-09-22 11 views
19

Ich bin mir sicher, dass dies einfach sein sollte (wahrscheinlich fehlt etwas offensichtlich), aber ... Ich habe eine Datenbank-Zeichenfolge von Millisekunden Ich möchte in Rils ein US-formatiertes Datum konvertieren. Die Figur, die .to_date nennt, würde mein Freund sein, aber es wirft einen merkwürdigen Fehler.Konvertieren von Millisekunden in formatierte Datum in Rails

article.date => "1379844601000" 

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

Kann jemand den richtigen Weg empfehlen, dies zu tun?

Antwort

12

Verwendung Date.strptime - aber vor diesem, wandelt sie in Sekunden zuerst:

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

Das funktioniert gut, danke - gibt es eine Möglichkeit, es als MM-DD-YYYY anzuzeigen anstelle von TAG, DD MMM YYYY? – Nick

+0

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

-1

Time.parse ("1379844601000") werden Sie das Datum und die Uhrzeit

+2

Funktioniert das für Sie? Es gibt mir 'ArgumentError: keine Zeitinformation in" 1379844601000 "'. Date.parse gibt 'ArgumentError: ungültiges Datum'. – Nick

+0

Es funktioniert gut für mich >> Time.parse ("1379844601000") => So Sep 22 16:32:36 +0530 2013 – vigneshre

+2

Sieht aus wie ein Problem mit der Ruby-Version. Ruby 1.9.x-Versionen haben diese Syntaxoption nicht. Also, Sie können Time.strptime() -Methode verwenden oder einige Edelsteine ​​wie diese verwenden https://github.com/jeremyevans/ruby-american_date – vigneshre

29

wandelt es in Sekunden (milliseconds/1000) und Call Time::at auf das Ergebnis:

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

Dies sollte die akzeptierte Antwort sein – pungoyal

Verwandte Themen