【发布时间】:2018-03-21 12:15:03
【问题描述】:
我想获取洛杉矶的时区信息,现在 2017 年 10 月 10 日是夏令时, 但是当我通过两种方式获得洛杉矶的时区时,我得到了不同的结果。
public class TimeZoneDemo2 {
public static void main(String[] args) {
TimeZone timeZoneLosAngeles =
TimeZone.getTimeZone("America/Los_Angeles");
System.out.println(timeZoneLosAngeles);
TimeZone timeZoneGmtMinus07 = TimeZone.getTimeZone("GMT-07:00");
System.out.println(timeZoneGmtMinus07);
}
}
结果是:
sun.util.calendar.ZoneInfo[id="America/Los_Angeles",offset=-28800000,dstSavings=3600000,useDaylight=true,transitions=185,lastRule=java.util.SimpleTimeZone[id=America/Los_Angeles, offset=-28800000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=2,startDay=8,startDayOfWeek=1,startTime=7200000,startTimeMode=0,endMode=3,endMonth=10,endDay =1,endDayOfWeek=1,endTime=7200000,endTimeMode=0]]
sun.util.calendar.ZoneInfo[id="GMT-07:00",offset=-25200000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
我的问题是:“America/Los_Angeles”获得的时区信息中的夏令时信息。为什么不在“GMT -0700”获取的时区信息中包含夏令时信息(useDaylight = false)?
【问题讨论】:
-
您暗示
TimeZone.getTimeZone(String)的结果取决于当前时间是不正确的。 -
有多个位置是 GMT-7 mapstudio.co.za/wp-content/uploads/2014/02/9781770265646.jpg 它怎么知道你的意思是洛杉矶?
-
GMT-07:00是一个 offset(与 UTC 的差异),而America/Los_Angeles是一个 timezone(一个区域在历史),阅读更多关于区别here。如前所述,that uses the same offset 不止一个时区,所以只有拥有 GMT-7,你才能can't say which timezone is
标签: java timezone dst timezone-offset