-1

トルコには 2 つのタイムゾーン GMT+2 と GMT+3 があります。GMT+2 の日付を GMT+3 に変更したいのですが、GMT+2 TimeZone の時間と分を保護したいと考えています。

時間と分を取り、これらの値を GMT+3 TimeZone の日付に設定したいと考えています。結果として、時間と分に変化があってはなりませんが、timeZone のみが変化する必要があります。関数toconvertの日付は GMT+2 形式である必要がありますが、戻り値は GMT+3 形式である必要があります。はっきりさせる方法は?

public static Date convertTimezone(Date toConvert) {
    Date date = new Date();
    date.setYear(toConvert.getYear());
    date.setMonth(toConvert.getMonth());
    date.setHours(toConvert.getHours());
    date.setMinutes(toConvert.getMinutes());
    return date;
}
4

4 に答える 4

5

Java では、aDateは特定の時点を表し、他には何もありません。これは、Dateそれがどのように印刷されるか、どのタイムゾーンなどについて何も知らないことを意味します...

したがって、タイム ゾーンは、印刷時に設定するものですDate。クラスDateFormatは通常、印刷に使用され、タイム ゾーンは で設定できるプロパティの一部ですDateFormat。通常、人々はサブクラスSimpleDateFormatを使用します。

于 2012-09-05T06:49:55.950 に答える
0

java.util.Date はタイムゾーンの詳細を追跡できません。代わりにカレンダーを使用

于 2012-09-05T06:49:45.403 に答える
0

この場合、Date オブジェクトを使用しないでください。代わりにカレンダーを使用してください。

public static Calendar convertTimezone(Calendar toConvert) {
    Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT+3"));
    calendar.set(Calendar.YEAR, toConvert.get(Calendar.YEAR));
    calendar.set(Calendar.MONTH, toConvert.get(Calendar.MONTH));
    calendar.set(Calendar.DATE, toConvert.get(Calendar.DATE));
    calendar.set(Calendar.HOUR_OF_DAY, toConvert.get(Calendar.HOUR_OF_DAY));
    calendar.set(Calendar.MINUTE, toConvert.get(Calendar.MINUTE));
    return calendar;
}
于 2012-09-05T06:50:41.457 に答える
-1

CalenderAPIを使用して、あるタイムゾーンを別のタイムゾーンに変換できます

public static Date convertTimezone(Date toConvert) {
    Calender calendar = Calendar.getInstance();
    calender.setTime(toConvert);
    int hour = calender.get(Calender.HOUR_OF_DAY);
    int minutes = calender.get(Calender.MINUTE);
    Calendar ret  = new GregorianCalender(timeZone); //timeZone is destination TimeZone
    ret.setTimeInMillis(calendar.getTimeInMillis() +
            timeZone.getOffset(calendar.getTimeInMillis()) -
            TimeZone.getDefault().getOffset(calendar.getTimeInMillis()));
    ret.set(Calender.HOUR_OD_DAY, hour);
    ret.set(Calender.MINUTE, minutes);

    return ret.getTime();
}
于 2012-09-05T06:54:37.770 に答える