web-dev-qa-db-ja.com

Joda-Timeを使用してタイムゾーンでローカルミリ秒を取得する最も簡単な方法

現在、ローカルタイムゾーンで1970年の開始からミリ秒を取得するには、

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

これは機能しますが、これを行う簡単な方法はありますか?

25
Alexey Romanov

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();
16
Andrew McNamee

(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);
2
Ethan Lee