Não sei bem o que você quer dizer com "milissegundos atuais", mas presumo que seja o número de milissegundos desde a "época", ou seja, meia-noite de 1º de janeiro de 1970, UTC.
Se você deseja encontrar o número de milissegundos desde a época no momento, use System.currentTimeMillis()
como o Anubian Noob indicou . Nesse caso, não há razão para usar qualquer uma das novas APIs java.time para fazer isso.
No entanto, talvez você já tenha um LocalDateTime
objeto ou similar de algum lugar e deseje convertê-lo em milissegundos desde a época. Não é possível fazer isso diretamente, pois a LocalDateTime
família de objetos não tem noção de em que fuso horário eles estão. Portanto, as informações de fuso horário precisam ser fornecidas para encontrar o horário relativo à época, que está no UTC.
Suponha que você tenha um LocalDateTime
seguinte:
LocalDateTime ldt = LocalDateTime.of(2014, 5, 29, 18, 41, 16);
Você precisa aplicar as informações de fuso horário, fornecendo a ZonedDateTime
. Estou no mesmo fuso horário de Los Angeles, então eu faria algo assim:
ZonedDateTime zdt = ldt.atZone(ZoneId.of("America/Los_Angeles"));
Obviamente, isso faz suposições sobre o fuso horário. E existem casos extremos que podem ocorrer, por exemplo, se a hora local indicar um horário próximo à transição do horário de verão. Vamos deixar isso de lado, mas você deve estar ciente de que esses casos existem.
De qualquer forma, se você puder obter um válido ZonedDateTime
, poderá convertê-lo no número de milissegundos desde a época, da seguinte forma:
long millis = zdt.toInstant().toEpochMilli();
System.currentTimeMillis()
?