输出TimeZone.getDefault()方法

时间:2013-05-31 05:00:39

标签: java datetime locale

当我运行以下行时,

    System.out.println(java.util.TimeZone.getDefault());

我得到了以下输出。

  sun.util.calendar.ZoneInfo[id="Asia/Calcutta",
  offset=19800000,
  dstSavings=0,
  useDaylight=false,
  transitions=6,
  lastRule=null]

System.out.println(Locale.getDefault());给出了

`en_US` 

我怀疑是

Localeen_US时,Zone id怎么可能Asia/Calcutta

在第一个输出中,我还没有理解什么是offset, dstSavings, useDaylight, transitions and rules ?

任何人都可以帮助理解这些。

提前致谢...

2 个答案:

答案 0 :(得分:2)

LocaleTimeZone无关,如果您愿意,可以在澳大利亚用法语设置您的计算机......您不需要法国TimeZone。

要了解有关TimeZone的更多信息,请阅读以下内容:

<强> useDaylightTime

public abstract boolean useDaylightTime()
  

查询此时区是否使用夏令时。

什么是Daylight Saving Time

<强> getDSTSavings

public int getDSTSavings()
  

返回添加到本地标准时间以获取本地挂钟时间的时间量。

所以这是UTC + TimeZone +(DSTSavings - 0或1小时)之间的差异。如果您目前处于DST节省模式,将返回1小时。

<强>规则

规则指的是DST处于活动状态的日期和不再存在的日期。更多信息SimpleTimeZone

<强>转换

  

此数组描述此时区的GMT偏移的转换,包括原始偏移更改和夏令时更改。长整数由四个位字段组成。

     

最重要的52位字段表示转换时间   格里高利1970年1月1日格林威治标准时间00:00:00       下一个4位字段保留,必须为0。       下一个4位字段是偏移[]的索引值,用于转换时的夏令时量。如果该值为零,则表示   没有夏令时,没有索引值为零。       最低有效4位字段是偏移[]的索引值,用于转换时的总GMT偏移。

     

如果此时区不遵守夏令时,则从未   在过去更改了任何GMT偏移量,此值为空。

答案 1 :(得分:1)

检查 this question以了解Locale.getDefault()的实际工作方式。

至于System.out.println(java.util.TimeZone.getDefault());

的输出
  1. DST节省:基本实现返回3600000(1小时) 使用夏令时的时区和0时区的时区
  2. 偏移:这是您的时区与格林威治标准时间的偏移量。对于印度, 它是5小时30分钟,即19800000毫秒
  3. UseDaylight:这表示没有日光调整 这个时区。
  4. 转换:这是指夏令时转换 时区。
  5. LastRule:返回表示最后一个GMT的SimpleTimeZone对象 offset和DST schedule,如果没有观察到该时区,则返回null DST。
  6. 希望这有帮助。