2013-09-08 41 views
12

Tôi đang cố gắng mất vài giây từ thời đại và biến nó thành đối tượng DateTime trong Scala. Tôi đang sử dụng joda. Thật không may cho dù tôi sử dụng giây hoặc mili giây, tôi nhận được kết quả lạ. Tôi làm gì sai ở đây?Chuyển đổi giây từ epoch sang joda DateTime trong 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

'1378607203' là gì? –

Trả lời

31

Kiểm tra một phiên REPL nhanh:

scala> 1378607203 * 1000 
res6: Int = -77299016 

Odd, không phải là nó? :) Bạn có thể đoán tại sao điều này đang xảy ra?

Tôi sẽ cung cấp cho bạn gợi ý được trích xuất từ ​​hàm tạo của DateTime mà bạn đang cố gắng sử dụng.

DateTime(long instant) 

Vẫn chưa hiểu? Hãy thử một phiên bản hơi khác:

scala> 1378607203L * 1000 
res8: Long = 1378607203000 

Lưu ý L cho biết loại chữ Long. Bạn đang yêu cầu 1 nghìn tỷ! Và Int chỉ đi xa tới 2 billons:

scala> Int.MaxValue 
res7: Int = 2147483647 

Vì vậy, làm DateTime(1378607203L*1000) sẽ làm cho nó hoạt động.

+0

Có cùng vấn đề trong Java. Cảm ơn! – grasshopper

+0

làm cách nào để chuyển đổi ngày giờ joda ('1970-01-16T22: 56: 47.203Z') thành thời gian Unix? –

+2

Tôi muốn nói đầu tiên nghiên cứu ngày và thời gian apis. thứ hai hỏi một câu hỏi là SO. Trong câu hỏi riêng của nó, không có trong câu hỏi của người khác. – pedrofurla

Các vấn đề liên quan