Подтвердить что ты не робот

Самый простой способ получить локальные миллисекунды в часовом поясе с помощью Joda-Time

В настоящее время, чтобы получить миллисекунды с начала 1970 года в локальном часовом поясе, я делаю

long localMillis = dateTime.withZone(timeZone).toLocalDateTime()
    .toDateTime(DateTimeZone.UTC).getMillis();

Это работает, но есть ли более простой способ сделать это?

4b9b3361

Ответ 1

Вы можете сделать это немного яснее, сохранив константу LocalDateTime, относящуюся к 1 января 1970 года, а затем вычислив Duration между этим моментом времени (для данного часового пояса) и моментом, о котором вы заботитесь, например:

private static final LocalDateTime JAN_1_1970 = new LocalDateTime(1970, 1, 1, 0, 0);

...

new Duration(JAN_1_1970.toDateTime(someTimeZone), endPointInstantOrDateTime).getMillis();

Ответ 2

Использовать (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);