2013-09-08 16 views
12

Scala'da bir saniye kullanmaya ve Scala'da bir DateTime nesnesine dönüştürmeye çalışıyorum. Joda kullanıyorum. Maalesef saniyeler mi yoksa milisaniye mi kullanıyorum, garip sonuçlar alıyorum. Burada neyi yanlış yapıyorum?Ecadan itibaren joda'ya dönüştürme zamanları Scala'da DateTime

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

1378607203 nedir? –

cevap

31

Kontrol hızlı bir REPL oturum:

scala> 1378607203 * 1000 
res6: Int = -77299016 

Garip, değil mi? :) Bunun neden olduğunu tahmin edebilir misiniz?

Kullanmaya çalıştığınız DateTime yapıcısından çıkarılmış bir ipucu vereceğim.

DateTime(long instant) 

Hala anlamıyor musunuz? en biraz daha farklı bir versiyonunu deneyelim:

scala> 1378607203L * 1000 
res8: Long = 1378607203000 

Bildirimi L Uzun tip bir edebi belirten. 1 trilyon soruyorsun! Ve Int sadece 2 billons kadar gitmek:

scala> Int.MaxValue 
res7: Int = 2147483647 

Yani DateTime(1378607203L*1000) yapıyor o iş yapacaktır.

+0

Java'da aynı sorunu vardı. Teşekkürler! – grasshopper

+0

joda dateTime ('1970-01-16T22: 56: 47.203Z') Unix zamanına nasıl dönüştürebilirim? –

+2

İlk olarak apis tarih ve saatini okuduğumu söyleyebilirim. ikinci olarak bir soru sormak SO. Kendi sorumluğunda, başka birinin sorusu yok. – pedrofurla

İlgili konular