2013-09-08 12 views
12

Ich versuche Sekunden seit der Epoche zu nehmen und sie zu einem DateTime-Objekt in Scala zu machen. Ich benutze Joda. Leider, ob ich Sekunden oder Millisekunden verwende, bekomme ich seltsame Ergebnisse. Was mache ich hier falsch?Konvertiere Sekunden seit der Epoche zu joda DateTime in Scala

scala> new org.joda.time.DateTime(1378607203*1000) 
res2: org.joda.time.DateTime = 1969-12-31T02:31:40.984Z 

scala> new org.joda.time.DateTime(1378607203) 
res3: org.joda.time.DateTime = 1970-01-16T22:56:47.203Z 
+0

was ist '1378607203'? –

Antwort

31

prüfen eine schnelle REPL Sitzung:

scala> 1378607203 * 1000 
res6: Int = -77299016 

Odd, ist es nicht? :) Kannst du erraten, warum das passiert?

Ich gebe Ihnen einen Hinweis aus DateTime Konstruktor, den Sie versuchen zu verwenden.

DateTime(long instant) 

Immer noch nicht verstanden? Lassen Sie uns eine etwas andere Version versuchen:

scala> 1378607203L * 1000 
res8: Long = 1378607203000 

Beachten Sie die L eine wörtliche vom Typ angibt Long. Du verlangst 1 Billion! Und Int nur bis 2 billons gehen:

scala> Int.MaxValue 
res7: Int = 2147483647 

So DateTime(1378607203L*1000) tun wird es funktioniert.

+0

Hatte das gleiche Problem in Java. Vielen Dank! – grasshopper

+0

Wie konvertiere ich joda dateTime ('1970-01-16T22: 56: 47.203Z') in Unix-Zeit? –

+2

Ich würde sagen, zuerst das Datum und die Uhrzeit Apis zu studieren. Zweitens, eine Frage zu stellen ist SO. In seiner eigenen Frage, nein in der Frage eines anderen. – pedrofurla

Verwandte Themen