Je ne suis pas tout à fait sûr de ce que vous entendez par "millisecondes actuelles" mais je suppose que c'est le nombre de millisecondes depuis "l'époque", à savoir minuit, le 1er janvier 1970 UTC.
Si vous voulez trouver le nombre de millisecondes depuis l'époque en ce moment, utilisez-le System.currentTimeMillis()
comme l' a souligné Noub anubien . Si tel est le cas, il n'y a aucune raison d'utiliser l'une des nouvelles API java.time pour ce faire.
Cependant, vous possédez peut-être déjà un LocalDateTime
objet similaire de quelque part et vous souhaitez le convertir en millisecondes depuis l'époque. Il n'est pas possible de le faire directement, car la LocalDateTime
famille d'objets n'a aucune idée de leur fuseau horaire. Ainsi, les informations de fuseau horaire doivent être fournies pour trouver l'heure par rapport à l'époque, qui est en UTC.
Supposons que vous en ayez un LocalDateTime
comme ça:
LocalDateTime ldt = LocalDateTime.of(2014, 5, 29, 18, 41, 16);
Vous devez appliquer les informations de fuseau horaire, donnant un ZonedDateTime
. Je suis dans le même fuseau horaire que Los Angeles, donc je ferais quelque chose comme ça:
ZonedDateTime zdt = ldt.atZone(ZoneId.of("America/Los_Angeles"));
Bien sûr, cela fait des hypothèses sur le fuseau horaire. Et il y a des cas marginaux qui peuvent se produire, par exemple, si l'heure locale arrive à nommer une heure proche de la transition de l'heure d'été (heure d'été). Mettons cela de côté, mais sachez que ces cas existent.
Quoi qu'il en soit, si vous pouvez obtenir un valide ZonedDateTime
, vous pouvez le convertir en nombre de millisecondes depuis l'époque, comme ceci:
long millis = zdt.toInstant().toEpochMilli();
System.currentTimeMillis()
?