2016-05-19 1 views
0

は私がLocalDateTimeからのミリ秒を取得するためのテストをしたとき、LocalDateTimeTimestampからの私のコードを移植しています私はCalendarDateを使用してそれを得るからの差分結果を見ました。LocalDateTimeとDateからミリ秒単位でカレンダーの間に差異があるのはなぜですか?

これが私の "テスト" である:私はそれらの間の理由の違いを理解していない

System.out.println(LocalDateTime.of(2016,5,19,14,8,0).toInstant(ZoneOffset.UTC).toEpochMilli()); 

System.out.println(Timestamp.valueOf(LocalDateTime.of(2016,5,19,14,8,0)).getTime()); 

Calendar c = Calendar.getInstance(TimeZone.getTimeZone(ZoneId.of("UTC"))); 
c.set(2016,5,19,14,8,0); 

System.out.println(c.getTime().getTime()); 

+4

あなたの質問に結果を含めます。 –

+1

これは、http://stackoverflow.com/questions/19431234/converting-between-java-time-localdatetime-and-java-util-dateに役立ちます。 – n01dea

答えて

2

テストの結果は次のとおりです。

1463666880000 
1463659680000 
1466345280067 

それぞれの値はミリ秒単位です。

  • 最初の2つの値の差は正確に2時間です。最初の行ではUTC timezoneを設定し、2行目で何も設定しなかったので、ローカルタイムゾーンに設定されています(実際には、現在はUTC + 2です)。

  • 第1と第3の値の違いは、ミリ秒の部分を除いて、1か月です。 LocalDateTime.of()メソッドでは、1から12までの月の引数が必要ですが、Calendar.set()は0から11までの月の引数が必要です。したがって、実際に設定した3行目の06/19/2016

関連する問題