Yerel saat UTC saat diliminde olduğu için org.joda.time.LocalDateTime
bir Unix zaman damgasına nasıl dönüştürebilirim?Joda LocalDateTime için Unix zaman damgasını dönüştürün
Örnek:
new LocalDateTime(2015, 10, 02, 11, 31, 40)
>1443785500
.
Yerel saat UTC saat diliminde olduğu için org.joda.time.LocalDateTime
bir Unix zaman damgasına nasıl dönüştürebilirim?Joda LocalDateTime için Unix zaman damgasını dönüştürün
Örnek:
new LocalDateTime(2015, 10, 02, 11, 31, 40)
>1443785500
.
Verilen İstediğiniz Unix zaman damgası en basit yaklaşım UTC için DateTimeZone
belirterek bir DateTime
dönüştürmek ve bu dönüşüm gerçekleştirmek üzere olduğu "UTC'de, LocalDateTime
verilen":
LocalDateTime local = new LocalDateTime(2015, 10, 02, 11, 31, 40);
DateTime utc = local.toDateTime(DateTimeZone.UTC);
long secondsSinceEpoch = utc.getMillis()/1000;
Not Burada bir Unix zaman damgası olarak saniyeler kullanılması - diğer API'ler (ör. java.util.Date
) Unix döneminden bu yana milisaniye bekleyebilir.
Ayrıca '1000' yerine DateTimeConstants.MILLIS_PER_SECOND' kullanabilirsiniz veya' Duration.millis (local.toDateTime (DateTimeZone.UTC) .getMillis) .getStandardSeconds' işlevini kullanabilirsiniz. – mixel
Basit ve düzgün, Joda geliştiricisi getLocalMillis() öğesini herkese açık olarak gösterme nedenleri ortaya çıkardığında. Bağlantı: https://github.com/JodaOrg/joda-time/issues/87 – vijay
Hatırlarsam, Unix zaman damgası Unix çağından beri geçen saniye sayısıdır, belki de bu gibi bir şey (http://stackoverflow.com/questions/22990067/how-to-extract-epoch-from-localdate- ve-localdatetime) – MadProgrammer
A 'LocalDateTime'de saat dilimi yoktur, bu nedenle zaman içinde bir ponit temsil etmez. Herhangi bir anlam ifade etmek için bir zaman dilimi belirtmeniz gerekir. –
@JonSkeet Bu UTC! –