Come si converte un org.joda.time.LocalDateTime
in un timestamp Unix, dato che l'ora locale è nel fuso orario UTC?Converti Joda LocalDateTime in Unix timestamp
Esempio:
new LocalDateTime(2015, 10, 02, 11, 31, 40)
>1443785500
.
Come si converte un org.joda.time.LocalDateTime
in un timestamp Unix, dato che l'ora locale è nel fuso orario UTC?Converti Joda LocalDateTime in Unix timestamp
Esempio:
new LocalDateTime(2015, 10, 02, 11, 31, 40)
>1443785500
.
Dato che si desidera che il timestamp Unix "il dato LocalDateTime
, in UTC" l'approccio più semplice è solo quello di convertirlo in un DateTime
specificando l'DateTimeZone
per UTC, e convertire che:
LocalDateTime local = new LocalDateTime(2015, 10, 02, 11, 31, 40);
DateTime utc = local.toDateTime(DateTimeZone.UTC);
long secondsSinceEpoch = utc.getMillis()/1000;
Nota del uso di secondi qui come timestamp Unix - altre API (es. java.util.Date
) potrebbero aspettarsi millisecondi dall'epoca Unix.
Inoltre puoi usare 'DateTimeConstants.MILLIS_PER_SECOND' invece di' 1000' o usare 'Duration.millis (local.toDateTime (DateTimeZone.UTC) .getMillis) .getStandardSeconds'. – mixel
Semplice e pulito, quando lo sviluppatore Joda sta esponendo i motivi per esporre getLocalMillis() come pubblico. Link: https://github.com/JodaOrg/joda-time/issues/87 – vijay
Se ricordo, il timestamp Unix è il numero di secondi dall'epoca Unix, forse qualcosa come [questo] (http://stackoverflow.com/questions/22990067/how-to-extract-epoch-from-localdate- and-localdatetime) – MadProgrammer
Un 'LocalDateTime' non ha un fuso orario, quindi non rappresenta un ponit nel tempo. È necessario specificare un fuso orario affinché ciò abbia un senso. –
@JonSkeet È UTC! –