私はHOUR_OF_DAYフィールドを設定し、GregorianCalendar日付オブジェクトのタイムゾーンを変更しようとしています。Java GregorianCalendar change TimeZone
GregorianCalendar date = new GregorianCalendar(TimeZone.getTimeZone("GMT+10"));
System.out.println("HOUR: " + date.get(Calendar.HOUR_OF_DAY));
date.set(Calendar.HOUR_OF_DAY, 23);
//date.get(Calendar.HOUR_OF_DAY);
date.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println("HOUR: " + date.get(Calendar.HOUR_OF_DAY));
出力:
HOUR: 16
HOUR: 23
HOUR_OF_DAYの値が異なるタイムゾーンを設定した後に変更されませんいくつかの理由。これが可能であるどのように
HOUR: 16
HOUR: 13
:私はHOUR_OF_DAYためdate.getのコメントを解除した場合でも、すべてがアウトプットそれが
GregorianCalendar date = new GregorianCalendar(TimeZone.getTimeZone("GMT+10"));
System.out.println("HOUR: " + date.get(Calendar.HOUR_OF_DAY));
date.set(Calendar.HOUR_OF_DAY, 23);
date.get(Calendar.HOUR_OF_DAY); // uncommenting this line will is changing the output
date.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println("HOUR: " + date.get(Calendar.HOUR_OF_DAY));
必要として正確に動作しますか?なぜ、getメソッドがオブジェクトの動作を変更しているのですか?