私は時間を設定しようとしている GregorianCalendar を持っています。あるカレンダーから日付を取得し、別のカレンダーから時刻を取得しています。DST切り替え日の午前2時を除いて、ほとんど機能します。
たとえば、日付が 2013 年 3 月 10 日、時刻が午前 2 時 40 分、ターゲット出力が 2013 年 3 月 10 日午前 2 時 40 分である場合、2013 年 3 月 10 日 午前 3 時 40 分になります。
GregorianCalendar reportingDate = //some instance with a relevant date (in this case 3/10/2013)
GregorianCalendar targetTime = //some instance with a relevant time (in this case 2:40AM)
Calendar combination = Calendar.getInstance();
combination.set(Calendar.YEAR, reportingDate.get(Calendar.YEAR));
combination.set(Calendar.MONTH, reportingDate.get(Calendar.MONTH));
combination.set(Calendar.DAY_OF_YEAR, reportingDate.get(Calendar.DAY_OF_YEAR));
combination.set(Calendar.HOUR, targetTime.get(Calendar.HOUR));
combination.set(Calendar.AM_PM, targetTime.get(Calendar.AM_PM));
combination.set(Calendar.MINUTE, targetTime.get(Calendar.MINUTE));
combination.set(Calendar.SECOND, targetTime.get(Calendar.SECOND));
コードがコンビネーション カレンダーに AM_PM を設定するとすぐに、時刻が午前 3 時 40 分に切り替わります。切り替わらないでほしい。これは、エポック日付の時間として作成されるターゲット時間カレンダーに関係していると思いますが、ターゲット時間の特定の日付はあまり重要ではありません...