現在、ローカル タイム ゾーンで 1970 年の開始からミリ秒を取得するには、次のようにします。
long localMillis = dateTime.withZone(timeZone).toLocalDateTime()
.toDateTime(DateTimeZone.UTC).getMillis();
これは機能しますが、これを行うより簡単な方法はありますか?
現在、ローカル タイム ゾーンで 1970 年の開始からミリ秒を取得するには、次のようにします。
long localMillis = dateTime.withZone(timeZone).toLocalDateTime()
.toDateTime(DateTimeZone.UTC).getMillis();
これは機能しますが、これを行うより簡単な方法はありますか?
LocalDateTime
1970 年 1 月 1 日を参照する定数を格納し、Duration
その時点 (特定のタイム ゾーン) と関心のある瞬間との間の を計算することで、これを少し明確にすることができます。
private static final LocalDateTime JAN_1_1970 = new LocalDateTime(1970, 1, 1, 0, 0);
...
new Duration(JAN_1_1970.toDateTime(someTimeZone), endPointInstantOrDateTime).getMillis();
(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);