-1

土耳其有两个 TimeZone GMT+2 和 GMT+3。我想将 GMT+2 日期更改为 GMT+3,但我想保护 GMT+2 时区中的小时和分钟。

我想花几小时和几分钟,然后将这些值设置为 GMT+3 TimeZone 日期。结果,小时和分钟不得更改,但时区必须仅更改。at function toconvertdate 必须是 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 回答