Non sono del tutto sicuro di cosa intendi per "millisecondi attuali", ma suppongo che sia il numero di millisecondi dall'epoca "epoca", cioè mezzanotte, 1 gennaio 1970 UTC.
Se vuoi trovare il numero di millisecondi dall'epoca in questo momento, allora usa System.currentTimeMillis()
come ha sottolineato Anubian Noob . In tal caso, non c'è motivo di utilizzare nessuna delle nuove API java.time per farlo.
Tuttavia, forse hai già un LocalDateTime
oggetto simile o simile da qualche parte e vuoi convertirlo in millisecondi dall'epoca. Non è possibile farlo direttamente, poiché la LocalDateTime
famiglia di oggetti non ha idea del fuso orario in cui si trovano. Pertanto, è necessario fornire le informazioni sul fuso orario per trovare l'ora relativa all'epoca, che è in UTC.
Supponiamo di avere un LocalDateTime
simile:
LocalDateTime ldt = LocalDateTime.of(2014, 5, 29, 18, 41, 16);
È necessario applicare le informazioni sul fuso orario, fornendo a ZonedDateTime
. Sono nello stesso fuso orario di Los Angeles, quindi farei una cosa del genere:
ZonedDateTime zdt = ldt.atZone(ZoneId.of("America/Los_Angeles"));
Naturalmente, questo fa ipotesi sul fuso orario. E ci sono casi limite che possono verificarsi, ad esempio, se l'ora locale indica un orario vicino alla transizione dell'ora legale (ora legale). Mettiamoli da parte, ma dovresti essere consapevole che questi casi esistono.
Ad ogni modo, se riesci a ottenere un valore valido ZonedDateTime
, puoi convertirlo nel numero di millisecondi dall'epoca, in questo modo:
long millis = zdt.toInstant().toEpochMilli();
System.currentTimeMillis()
?