No estoy completamente seguro de lo que quiere decir con "milisegundos actuales", pero supongo que es la cantidad de milisegundos desde la "época", es decir, la medianoche, 1 de enero de 1970 UTC.
Si desea encontrar el número de milisegundos desde la época en este momento, utilice System.currentTimeMillis()
como Anubian Noob ha señalado . Si es así, no hay razón para usar ninguna de las nuevas API java.time para hacer esto.
Sin embargo, tal vez ya tenga un LocalDateTime
objeto similar en algún lugar y desee convertirlo a milisegundos desde la época. No es posible hacer eso directamente, ya que la LocalDateTime
familia de objetos no tiene idea de en qué zona horaria se encuentran. Por lo tanto, se debe proporcionar información sobre la zona horaria para encontrar la hora relativa a la época, que está en UTC.
Supongamos que tienes una LocalDateTime
como esta:
LocalDateTime ldt = LocalDateTime.of(2014, 5, 29, 18, 41, 16);
Debe aplicar la información de zona horaria, dando a ZonedDateTime
. Estoy en la misma zona horaria que Los Ángeles, así que haría algo como esto:
ZonedDateTime zdt = ldt.atZone(ZoneId.of("America/Los_Angeles"));
Por supuesto, esto hace suposiciones sobre la zona horaria. Y hay casos extremos que pueden ocurrir, por ejemplo, si la hora local indica una hora cercana a la transición del horario de verano (horario de verano). Dejemos esto de lado, pero debe tener en cuenta que estos casos existen.
De todos modos, si puede obtener un valor válido ZonedDateTime
, puede convertirlo a la cantidad de milisegundos desde la época, así:
long millis = zdt.toInstant().toEpochMilli();
System.currentTimeMillis()
?