Я не зовсім впевнений, що ви маєте на увазі під "поточними мілісекундами", але я припускаю, що це кількість мілісекунд після "епохи", а саме опівночі, 1 січня 1970 року UTC.
Якщо ви хочете знайти кількість мілісекунд з епохи прямо зараз, тоді використовуйте System.currentTimeMillis()
як Анубіан Нооб . Якщо так, то немає ніяких причин використовувати будь-який з нових API java.time для цього.
Однак, можливо, у вас вже є LocalDateTime
десь подібний об’єкт, і ви хочете перетворити його в мілісекунди з епохи. Це неможливо зробити безпосередньо, оскільки LocalDateTime
сімейство об'єктів не має поняття, в якому часовому поясі вони знаходяться. Таким чином, потрібно подавати інформацію про часовий пояс, щоб знайти час відносно епохи, що знаходиться в UTC.
Припустимо, у вас LocalDateTime
таке:
LocalDateTime ldt = LocalDateTime.of(2014, 5, 29, 18, 41, 16);
Потрібно застосувати інформацію про часовий пояс, вказавши а ZonedDateTime
. Я перебуваю в тому ж часовому поясі, що і Лос-Анджелес, тому я б зробив щось подібне:
ZonedDateTime zdt = ldt.atZone(ZoneId.of("America/Los_Angeles"));
Звичайно, це робить припущення про часовий пояс. І можуть бути випадки, наприклад, якщо місцевий час називає час біля переходу на літній час (літній час). Давайте відкладемо їх, але ви повинні знати, що ці випадки існують.
У будь-якому випадку, якщо ви можете отримати дійсне ZonedDateTime
, ви можете перетворити це на кількість мілісекунд з епохи, наприклад:
long millis = zdt.toInstant().toEpochMilli();
System.currentTimeMillis()
?