Я могу преобразовать временную метку unix в Date()
объект, поместив long
значение в Date()
конструктор. Например: я мог бы иметь это как new Date(1318762128031)
.
Но после этого, как я могу вернуть метку времени unix от Date()
объекта?
Я могу преобразовать временную метку unix в Date()
объект, поместив long
значение в Date()
конструктор. Например: я мог бы иметь это как new Date(1318762128031)
.
Но после этого, как я могу вернуть метку времени unix от Date()
объекта?
Ответы:
getTime() = unixTimestamp * 1000
) getTime()
всегда будет возвращать три нуля в конце, но на самом деле может возвращать все, что угодно, начиная с конца 000
на 999
, что означает, что он имеет более высокий точность из-за миллисекунд, а не просто "* 1000". Значение: сравнение реального unixTimestamp * 1000 с getTime()
результатом будет успешным только в ~ 0,1% случаев.
Чтобы получить timestamp
от Date()
, вам нужно разделить getTime()
на 1000
, то есть:
Date currentDate = new Date();
currentDate.getTime() / 1000;
// 1397132691
или просто:
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;
}
}
В java 8 удобно использовать новую библиотеку даты и getEpochSecond
метод для получения метки времени (она находится в секундах)
Instant.now().getEpochSecond();
Instant
вместо Instant.now()
. Или, yourDesiredJavaUtilDate.toInstant()
если вы получили устаревший Date
из устаревшего API.