ホーム>source

要するに:

私はエポックな時間を持っています、そして January 1, 1970, 00:00:00 GMT からそれを時間にしたいと思います java.util.Date として与えられることを期待します。

このコードは私の問題を実証するのに役立ちます:

<前>ウィズウィズ

そしてそれは出力します:

<前>ウィズウィズ

t1は他のすべてと異なることに注意してください。t1はGMTであり、その他はすべてUTCであるためです。

import java.util.Date; import java.util.Locale; import org.junit.Test; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; public class TimeHelp { private String format = "EEE MMM dd HH:mm:ss yyyy"; public SimpleDateFormat asSimpleDateFormat() { return new SimpleDateFormat(format, Locale.ENGLISH); } public DateTimeFormatter asDateTimeFormatter() { return DateTimeFormatter.ofPattern(format, Locale.ENGLISH); } @Test public void test() throws Exception { System.out.println(ZoneId.systemDefault()); String s = "Sun Apr 04 02:00:01 2010"; long t1 = asSimpleDateFormat().parse(s).getTime(); ZonedDateTime zoned = LocalDateTime.parse(s, asDateTimeFormatter()) .atZone(ZoneId.systemDefault()); long t2 = zoned.toEpochSecond() * 1000; long t3 = Date.from(zoned.toInstant()).getTime(); long t4 = zoned.toInstant().toEpochMilli(); System.out.println("t1 " + t1); System.out.println("t2 " + t2); System.out.println("t3 " + t3); System.out.println("t4 " + t4); System.out.println("Difference in minutes " + Math.abs(t1 - t2)/1000/60); } } を使用する場合longの値は、 Australia/Sydney t1 1270310401000 t2 1270306801000 t3 1270306801000 t4 1270306801000 Difference in minutes 60 を使用する場合とは異なります SimpleDateFormat を取得するその後、 DateTimeFormatter を呼び出します 。

理由のため、私は ZonedDateTime を与えられたいですそれを toEpochSecond() に変換したいしかし、 ZonedDateTime が原因で、そのようなことは機能しないように見えます Date ではなくGMTで動作します 。

Date
あなたの答え
  • 解決した方法 # 1

    timeanddate.comの引用:

    ウィズウィズ ウィズウィズ  時計が1時間逆になって

    When local daylight time was about to reach  代わりにローカル標準時。

    つまり、その Sunday, April 4, 2010, 3:00:00 am  起こりました二度 あの日。では、これら2つのうち、どちらを取得しますか?

    Sunday, April 4, 2010, 2:00:00 am  あなたは 1つは、ドキュメント化されていませんが。

    Sun Apr 04 02:00:01 2010  あなたはついさっき 1:

    ウィズウィズ ウィズウィズ  そして SimpleDateFormat 、重複のケースを管理するのに役立ちます。

    ZonedDateTime

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ email - aspnetとc#を使用してlocalhostからメールを送信できますか?