26

目前,要在本地时区从 1970 年开始获得毫秒数,我会

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

这行得通,但是有没有更简单的方法可以做到这一点?

4

2 回答 2

16

LocalDateTime您可以通过存储一个引用 1970 年 1 月 1 日的常量,然后计算该Duration时间点(对于给定时区)和您关心的时刻之间的a 来使这一点更清楚一点,例如:

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

...

new Duration(JAN_1_1970.toDateTime(someTimeZone), endPointInstantOrDateTime).getMillis();
于 2012-07-30T12:20:11.223 回答
5

使用 (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);
于 2014-12-29T15:29:08.257 回答