Java将日期转换为EST时区以尊重DST

时间:2012-06-11 13:37:09

标签: java datetime timezone

我希望将当前日期转换为美国/蒙特利尔时区。我是这样做的:

Date date = new Date();
TimeZone timeZone = TimeZone.getTimeZone ("America/Montreal");
Calendar cal = new GregorianCalendar(timeZone);
cal.setTime(date);
String whatIWant = "" + cal.get(Calendar.HOUR_OF_DAY) + ':'+ 
                   cal.get(Calendar.MINUTE)+ ':'+ cal.get(Calendar.SECOND);

log.info(whatIWant);

转换很好,但我想知道这段代码有多强大。没有夏令时会发生什么?

1 个答案:

答案 0 :(得分:6)

该代码没问题。 Java会自动考虑冬季或夏季时间。

您也可以使用DateFormat对象将日期转换为字符串,在DateFormat对象上设置所需的时区:

Date date = new Date();

DateFormat df = new SimpleDateFormat("HH:mm:ss");

// Tell the DateFormat that you want the time in this timezone
df.setTimeZone(TimeZone.getTimeZone("America/Montreal"));

String whatIWant = df.format(date);