Java DSTの変更に関する問題を発見しました。 DST(夏時間)が発生した正確な瞬間に、特定の時刻が2回表示されることがあります。Java DST変更の問題
たとえば、タイムゾーンAmerica/Sao_Pauloの場合、2016年2月21日日曜日、00:00:00から2016年2月20日23:00:00土曜日の1時間後に変更されました。 時刻23:00はその日に2回表示されます。
私の使用例では、2回目にしたいと思います。たとえば、この日のデータが必要な場合は、実際にこの日を完全に意味します(おそらく、25時間が含まれていても)。
私の意見では、Javaがこの瞬間にはじめてのようです。
例:この例では
@Test
public void testDSTChange() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
TimeZone tz = TimeZone.getTimeZone("America/Sao_Paulo");
long dateInput = sdf.parse("2016-02-20T23:00:00").getTime();
long dateUTC = dateInput - tz.getOffset(dateInput);
long dateInput2 = sdf.parse("2016-02-21T02:00:00").getTime();
long dateUTC2 = dateInput2 - tz.getOffset(dateInput2);
System.out.println("Difference: " + (dateUTC2 - dateUTC)/3600/1000);
}
、これら2つの日付の間の差が4時間ではなく、私が期待3時間であることを示しています。だから私はそれを行うための他の方法があるのだろうか?
私はあなたの質問を明確に理解していません。あなたはその特定の日のあなたの時間が時間の変化によって影響を受けないことを望んでいますか? – JFPicard
いいえ、DST変更後の時間が必要です。私の例では、2016-02-20T23:00:00が実際にその日に2回起こり、DSTの変更後の2番目のものを取りたいと思います。 –
'java.util.Date'と' java.util.Calendar'ではなくJoda TimeまたはJava 8を使用できますか? –