试图了解java SimpleTimeZone规则

时间:2010-03-09 20:39:52

标签: java timezone

任何人都可以解释如何解释Java SimpleTimeZone规则。例如,欧洲/伦敦的规则如下:

var rule = {
    "dstSavings": 3600000,
    "startYear": 0,
    "startMonth": 2,
    "startDay": -1,
    "startDayOfWeek": 1,
    "endMonth": 9,
    "endDay": -1,
    "endDayOfWeek": 1,
    "endTime": 3600000,
    "rawOffset": 0,
    "startTime": 3600000,
    "startTimeMode": "UTC",
    "endTimeMode": "UTC",
    "useDaylight": true
  };

阅读STZ documentation会有所帮助,但不适用于此特定规则。

endDay = 0表示什么?如果startDay = 0怎么办?

感谢,

2 个答案:

答案 0 :(得分:2)

the API(问题中提供的相同链接)中,构造函数文档说:

  

“startDay - 夏令时开始的月份日期。有关此参数的特殊情况,请参阅类别说明。”
  “endDay - 夏令时结束的月份的日期。有关此参数的特殊情况,请参阅类说明。”

你能更具体地说一下令人困惑的事吗?

编辑:

好的,我现在更好地理解你的问题了。正如你自己想出的那样,正数表示“向前计数”,负数表示“向后计数”。 零似乎表示该位置没有夏令时。

编辑2:

the source,“值为0是非法的。”请参阅第984行和第1045行。如果useDaylight为false,这似乎没问题,但您的示例JSON中并非如此。

答案 1 :(得分:0)

endDaystartDay表示夏令时的结束和开始。因为这总是在从周六到周日的夜晚。在描述DST时,这表示该月的“startDay”星期日。在这种情况下,我不完全确定-1的含义。在linux时区中,5表示该月的最后一天,因此可能在此为-1。