使用Joda-Time在时区中获取本地毫秒的最简单方法

时间:2012-07-26 08:35:14

标签: jodatime

目前,要从当地时区1970年开始获得毫秒,我

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

这样可行,但有更简单的方法吗?

2 个答案:

答案 0 :(得分:15)

通过存储1970年1月1日的常量LocalDateTime,然后计算该时间点(对于给定时区)和瞬间之间的Duration,您可以更清楚一点你关心的,比如:

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

...

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

答案 1 :(得分:1)

使用(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);