私は入力として2つの日付を取るAPIを呼び出しています。APIは、2つの日付の差が60分を超えているかどうかをチェックしてから例外をスローします。私の入力日付はstartDate = 11-06-2016T00:57: 01とendDate = 11-06-2016T01:56:01の2つの日付がjava.util.Dateオブジェクトに保存されます。 問題は、2つの日付の差が59分で60分未満ですが、APIが例外をスローします。これはDayLightSaving.Onであるため、11月6日に午前2時にDayLightSavingが終了しますPDT時間帯が終了すると)、時間は1時間後に再び移動し、その時間は再び午前1時になりますが、PST時間帯になります。これは11月6日に、PDTに1回、PSTゾーンに2回。 このAPIがNOV 7で呼び出されると、タイムゾーンはPSTになります。指定されたタイムゾーンなしで2つの日付が渡されると、PDTゾーンでstartDateが使用され、PSTゾーンで終了します.PDTとPST自体に違いがあるこれは59分に追加され、差異が発生し、例外がスローされます。 入力日付がPDTからPSTへの移行期間にある場合のこのケースの処理方法? PST時間帯に呼び出されたとき入力日付がPDTからPSTへの移行期間にある日付の処理方法は?
サンプルコード
SimpleDateFormat formatter1 = new SimpleDateFormat("MM-dd-yyyy hh:mm:ss");
String start="11-06-2016 00:57:01";
String end ="11-06-2016 01:56:01";
Date startdate = formatter1.parse(start);
Date enddate = formatter1.parse(end);
System.out.println("startDate is :" + startdate);
System.out.println("endDate is :" +enddate);
long dateRange = enddate.getTime() - startdate.getTime();
//if the difference between the two dates is > than 60 min i.e 3600000 ms, then throw exception.
System.out.println(dateRange);
if (dateRange > (60 * 60 * 1000)){
throw new Exception("Date time range cannot be greater than 60 minutes.(calculated using millisecond difference)");
}
出力
[Date Range is = 7140000
Exception in thread "main" java.lang.Exception: Date time range cannot be greater than 60 minutes.(calculated using millisecond difference).
at Datetest.main(Datetest.java:28)][1]
上記スニペットは例外をスローします。
ISOの日付形式を使用している場合、日付と時刻が 'T 'で区切られている場合は、正しい' yyyy-MM-dd'の順序を使用する必要があります。 – Andreas
あなたが知っていたとおり、太平洋標準時の時は、01:56:01 _twice_ 11/6/2016でした。したがって、「このケースを処理する方法」を尋ねる前に、時刻01:56:01をどのように解釈するかを指定する必要があります。それだけではあいまいです。この時代はどこから来ていますか、それが曖昧さを解決できるようにPSTかPDTのどちらの情報をプログラムに伝えるのでしょうか? – ajb