EST时间转换与夏令时

时间:2016-08-29 05:56:42

标签: java date-format

EST 时间转换,夏令时错误

private void timeConversion() {
    String s = "2016-08-29 1:40:00 AM";
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a", Locale.ENGLISH);
    df.setTimeZone(TimeZone.getTimeZone("EST"));
    Date timestamp = null;
    try {
        timestamp = df.parse(s);
        df.setTimeZone(TimeZone.getDefault());
        System.out.println(df.format(timestamp));
    } catch (ParseException e) {
        e.printStackTrace();

    }
}

1 个答案:

答案 0 :(得分:1)

时区EST不考虑任何夏令时偏移:

TimeZone estTz = TimeZone.getTimeZone("EST");
System.out.println(estTz.useDaylightTime()); // prints 'false'

这是时区EST总是与UTC的-5:00小时偏移。

这可能是由于加拿大,墨西哥和中美洲(巴拿马)的一些地方不使用夏令时,而是全年使用EST。

如果你想要一个带DST偏移的时区,你应该使用像US / Eastern或America / New_York等的东西:

TimeZone usEasternTz = TimeZone.getTimeZone("US/Eastern");
System.out.println(usEasternTz.useDaylightTime()); // prints 'true'