Actuellement, pour obtenir des millisecondes à partir du début de 1970 dans un fuseau horaire local, je fais
long localMillis = dateTime.withZone(timeZone).toLocalDateTime()
.toDateTime(DateTimeZone.UTC).getMillis();
Cela fonctionne, mais existe-t-il un moyen plus simple de le faire?
Vous pouvez rendre cela un peu plus clair en stockant une constante LocalDateTime
faisant référence au 1er janvier 1970, puis en calculant un Duration
entre ce point dans le temps (pour un fuseau horaire donné) et l'instant où vous vous souciez, comme:
private static final LocalDateTime JAN_1_1970 = new LocalDateTime(1970, 1, 1, 0, 0);
...
new Duration(JAN_1_1970.toDateTime(someTimeZone), endPointInstantOrDateTime).getMillis();
Utilisez (joda-time-2.3.jar) org.joda.time.LocalDateTime # toDateTime () # getMillis ().
org.joda.time.format.DateTimeFormatter dtf = org.joda.time.format.DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss.SSS");
org.joda.time.LocalDateTime ldt = dtf.parseLocalDateTime("2014-12-25 12:23:34.567");
System.out.println(ldt);
long delta = ldt.toDateTime().getMillis();
System.out.println(delta);
Java.util.Date dt = new Java.util.Date(delta);
System.out.println(dt);