Я можу перетворити мітку часу 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.