xslt时区转换,夏令时

时间:2017-11-17 06:40:38

标签: xml xslt xpath timezone dst

我正在使用xslt并使用fn:current-dateTime()来获取当前日期时间(https://www.w3.org/TR/xpath-functions/#func-current-dateTime)。返回的时间是UTC。我需要将其转换为PST。我看到fn:adjust-dateTime-to-timezone(http://www.xqueryfunctions.com/xq/fn_adjust-datetime-to-timezone.html)可用于执行时区转换。但是我看到这个函数接受offset的形式的timeZone参数,即太平洋时区的-PT8H,而美国东部标准时间的-PT5H。当时区按偏移量传递时,在夏令时(DST)开始和结束时它会受到修改吗?有没有更好的方法在xslt中执行时区转换,这种方法不需要定期修改?或者在使用fn:adjust-dateTime-to-timezone来更好地处理这个问题时是否有建议?

2 个答案:

答案 0 :(得分:3)

用于操纵时区偏移的XPath函数完全根据数字(持续时间)偏移量工作,例如UTC -5小时或UTC +10小时。他们不了解民用时区名称或夏令时调整。

一个例外是format-date [Time]函数,其中第五个参数可用于强制转换到特定位置的本地时区,例如“America / New_York” - 但它在某种程度上是实现定义的这些名字得到承认。来自规范:

  

如果$ place参数以IANA时区的形式提供   实现识别的名称,然后是日期或时间   格式化被调整为适用于该时区的时区偏移量   时区。例如,如果xs:dateTime值为2010-02-15T12:00:00Z   格式化为$ place参数设置为America / New_York,然后   输出将如同值2010-02-15T07:00:00-05:00一样   提供。此调整将夏令时考虑在内   在可能的情况;如果有问题的日期在夏令时下降   在纽约的时间,然后调整到时区偏移-PT4H而不是   比-PT5H。只能使用夏令时进行调整   其中值包括日期,日期在其中   时区数据库涵盖的范围。

答案 1 :(得分:0)

如果代码本身在美国时区中运行,请使用此选项:

C