Potrafię przekonwertować znacznik czasu unixa na Date()
obiekt, umieszczając long
wartość w Date()
konstruktorze. Na przykład: mógłbym mieć to jako new Date(1318762128031)
.
Ale potem, jak mogę odzyskać uniksowy znacznik czasu z Date()
obiektu?
Potrafię przekonwertować znacznik czasu unixa na Date()
obiekt, umieszczając long
wartość w Date()
konstruktorze. Na przykład: mógłbym mieć to jako new Date(1318762128031)
.
Ale potem, jak mogę odzyskać uniksowy znacznik czasu z Date()
obiektu?
Odpowiedzi:
getTime()
pobiera milisekundy od 1 stycznia 1970 GMT przekazanego konstruktorowi. Uzyskanie z tego czasu uniksowego (tego samego, ale w sekundach) nie powinno być zbyt trudne .
getTime() = unixTimestamp * 1000
), getTime()
zawsze zwróciłoby trzy Zera na końcu, ale w rzeczywistości może zwrócić wszystko od zakończenia 000
do 999
, co oznacza, że ma wyższą precyzja wynikająca z milisekund, a nie tylko „* 1000”. Znaczenie: porównanie prawdziwego unixTimestamp * 1000 z getTime()
wynikiem mogłoby się powieść tylko w ~ 0,1% przypadków.
Aby otrzymać timestamp
od Date()
, musisz podzielić getTime()
przez 1000
, tj .:
Date currentDate = new Date();
currentDate.getTime() / 1000;
// 1397132691
lub po prostu:
long unixTime = System.currentTimeMillis() / 1000L;
new Date().getTime()
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.TimeZone;
public class Timeconversion {
private DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmm", Locale.ENGLISH); //Specify your locale
public long timeConversion(String time) {
long unixTime = 0;
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT+5:30")); //Specify your timezone
try {
unixTime = dateFormat.parse(time).getTime();
unixTime = unixTime / 1000;
} catch (ParseException e) {
e.printStackTrace();
}
return unixTime;
}
}
W java 8 wygodnie jest użyć nowej biblioteki dat i getEpochSecond
metody pobierania znacznika czasu (jest w sekundach)
Instant.now().getEpochSecond();
Instant
zamiast Instant.now()
. Lub yourDesiredJavaUtilDate.toInstant()
jeśli masz staromodny Date
interfejs ze starszego interfejsu API.