J'ai essayé de convertir un "DateTime" en millisecondes à l'aide du package Java.time intégré à Java 8.
Mais je n'ai pas été capable de le faire correctement. J'essaie de convertir "29/Jan/2015: 18: 00: 00" en millisecondes. Ce qui suit est quelque chose que j'ai essayé
Instant instant = Instant.parse("2015-01-29T18:00:00.0z");
Long instantMilliSeconds = Long.parseLong(instant.getEpochSecond() + "" + instant.get(ChronoField.MILLI_OF_SECOND));
System.out.println(new Date(instantMilliSeconds)); // prints Sun Jun 14 05:06:00 PDT 1970
J'ai essayé d'utiliser LocalDateTime
, mais je n'ai pas trouvé le moyen d'effectuer efficacement la conversion en millisecondes. Je ne dis pas que c'est la meilleure façon de le faire, si vous connaissez quelque chose de mieux, j'apprécierais vraiment quelques indications
Vous devriez utiliser Instant::toEpochMilli
.
System.out.println(instant.toEpochMilli());
System.out.println(instant.getEpochSecond());
System.out.println(instant.get(ChronoField.MILLI_OF_SECOND));
empreintes
1422554400000
1422554400
0
Votre version n'a pas fonctionné car vous avez oublié de compléter instant.get(ChronoField.MILLI_OF_SECOND)
avec des zéros supplémentaires pour la compléter à 3 endroits.
De Cours de date et heure les tutoriels ...
DateTimeFormatter formatter
= DateTimeFormatter.ofPattern("dd/MMM/yyyy:HH:mm:ss");
LocalDateTime date = LocalDateTime.parse("29/Jan/2015:18:00:00", formatter);
System.out.printf("%s%n", date);
Imprime 2015-01-29T18:00
ZoneId id = ZoneId.systemDefault();
ZonedDateTime zdt = ZonedDateTime.of(date, id);
System.out.println(zdt.toInstant().toEpochMilli());
Imprime 1422514800000
D'accord, je pense avoir enfin trouvé un moyen facile de faire ce que j'essaie de faire
LocalDateTime localDateTime = LocalDateTime.parse(date, DateTimeFormatter.ofPattern("dd/MMM/uuuu:H:m:s"));
System.out.println(localDateTime.toInstant(ZoneOffset.UTC).toEpochMilli());
Impressions 1390903200000