dateTime 类型的形式为:’-'? yyyy ‘-’ mm ‘-’ dd ‘T’ hh ‘:’ mm ‘:’ ss (’.’ s+)? (zzzzzz)?,其中:

  • ‘-’? yyyy 是一个4位或者更多位数的可使用负号的数字,表示年份;如果多于4位数字,则打头数字不能是0, ‘0000′ 也是禁止的;同样需要注意的是+号也不允许使用;
  • 剩下的 ‘-’ 是时间中各部分的分隔符;
  • 第一个 mm 是一个2位数字,表示月份;
  • dd 是一个2位数字,表示日期;
  • ‘T’ 是一个分隔符,指明后面是日期中的时间;
  • hh 是一个2位数字,表示小时;如果分钟和秒是 0,那么使用 ‘24′ 是允许的, 这个如此表示的 dateTime 值马上转为下一天的值(the dateTime value so represented is the first instant of the following day);
  • ‘:’ 是一个时间中各部分的分隔符;
  • 第二个 mm 是一个2位数的数字,表示分钟数;
  • ss 是一个2位整数数字,表示完整的秒数;
  • ‘.’ s+ (如果有) 表示秒数的小数部分;
  • zzzzzz (如果有) 表示时区 (如下面所描述的).

例如,2002-10-10T12:00:00-05:00 是 2002-10-10T17:00:00Z,比 2002-10-10T12:00:00Z 晚 5 个小时.

For further guidance on arithmetic with dateTimes and durations, see Adding durations to dateTimes (§E).

关于 TimeZone:

时区中的小时数上限是14,分钟数上限是59,除非小时数是 14,而分钟数必须是 0。

时区的形式是 ((’+’ | ‘-’) hh ‘:’ mm) | ‘Z’,其中:

  • hh 是一个2位数字 (必要情况下打头数字是0),表示小时数
  • mm 是一个2位数字,表示分钟数
  • ‘+’ 指明是一个正的时间段
  • ‘-’ 指明是一个负的时间段

‘+00:00′, ‘-00:00′, 和 ‘Z’ 都表示相同的 0 时区,即UTC; ‘Z’ 是它的规范表现方式.

当将一个时区加到一个 UTC dateTime 中,结果是该日期和时间“位于这个时区中”。例如,2002-10-10T12:00:00+05:00 是 2002-10-10T07:00:00Z,2002-10-10T00:00:00+05:00 是 2002-10-09T19:00:00Z.