夏令时的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();

    }
}

最佳答案

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

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


就是说,美国东部标准时间(EST)所在的时区始终与世界标准时间(UTC)偏移-5:00小时。

这可能是由于加拿大,Mexiko和中美洲(巴拿马)的某些地区全年未使用DST而是使用EST。

如果您想要一个具有DST偏移量的时区,则应使用类似US / Eastern或America / New_York之类的方法:

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

关于java - 夏令时的EST时间转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39199366/

10-17 01:30