java.util.Date
は、絶対的な時点です。 0900時間UTCおよび1200時間UTC + 3は全く同じjava.util.Date
オブジェクトです。どちらか一方を表現するために、それに加えられる「調整」はありません。
特定のタイムゾーンを人間が判読できる表現にするには、DateFormat
オブジェクトにタイムゾーンを設定します。
DateFormat format = new SimpleDateFormat("HH:mm");
format.setTimeZone(TimeZone.getTimeZone("UTC+3"));
String time = format.format(yourDate);
コメントで提起質問のためのソリューション:
Calendar cal1 = Calendar.getInstance(TimeZone.getTimeZone("UTC+3"));
cal1.setTime(yourDate);
Calendar cal2 = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
cal2.clear();
cal2.set(Calendar.YEAR, cal1.get(Calendar.YEAR));
cal2.set(Calendar.MONTH, cal1.get(Calendar.MONTH));
cal2.set(Calendar.DATE, cal1.get(Calendar.DATE));
cal2.set(Calendar.HOUR_OF_DAY, cal1.get(Calendar.HOUR_OF_DAY));
//simile for whatever level of field precision is needed
Date shiftedDate = cal2.getTime();
カレンダーはこれを行う方法です。あなたのユースケースは、問題を解決するために使用する内部オブジェクトと何が関係していますか? – Thom
私が意味することは、私はdbでカレンダーオブジェクトを保存したくないということです。あなたはカレンダーを使用してそれを変換する方法の例を提供できますか? – Jimmy
ああジョーダの時間は人生をはるかに簡単になります。 – Andy