2015-10-02 9 views
8

Wie konvertiere ich einen org.joda.time.LocalDateTime in einen Unix-Zeitstempel, da die lokale Zeit in der UTC-Zeitzone liegt?Joda LocalDateTime in Unix-Zeitstempel konvertieren

Beispiel:

new LocalDateTime(2015, 10, 02, 11, 31, 40)>1443785500.

+0

Wenn ich mich erinnere, Unix Zeitstempel ist die Anzahl der Sekunden seit der Unix-Epoche, vielleicht so etwas wie [dies] (http://stackoverflow.com/questions/22990067/how-to-extract-epoch-from-localdate- und-localdatetime) – MadProgrammer

+1

Eine 'LocalDateTime' hat keine Zeitzone, also repräsentiert sie nicht ein ponit in der Zeit. Sie müssen eine Zeitzone angeben, damit dies sinnvoll ist. –

+0

@JonSkeet Es ist UTC! –

Antwort

18

Vorausgesetzt, dass Sie wollen, dass die Unix-Zeitstempel „der gegebene LocalDateTime, in UTC“ der einfachste Ansatz ist es nur ein DateTime zu konvertieren, indem die DateTimeZone für UTC Angabe und konvertieren:

LocalDateTime local = new LocalDateTime(2015, 10, 02, 11, 31, 40); 
DateTime utc = local.toDateTime(DateTimeZone.UTC); 
long secondsSinceEpoch = utc.getMillis()/1000; 

Notiere die Verwendung von Sekunden hier als Unix-Zeitstempel - andere APIs (zB java.util.Date) können Millisekunden seit der Unix-Epoche erwarten.

+0

Sie können auch 'DateTimeConstants.MILLIS_PER_SECOND' anstelle von' 1000' verwenden oder 'Duration.millis (local.toDateTime (DateTimeZone.UTC) .getMillis) .getStandardSeconds' verwenden. – mixel

+0

Einfach und ordentlich, wenn der Joda-Entwickler Gründe ausstellt, um getLocalMillis() als öffentlich zugänglich zu machen. Link: https://github.com/JodaOrg/joda-time/issues/87 – vijay

Verwandte Themen