我正在使用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来更好地处理这个问题时是否有建议?
答案 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