xslt - XSLT 将 UTC 转换为 tz 时区
问题描述
我有以下变量:
<xsl:variable name="time">
<xsl:value-of select="'2020-12-26T17:33:11Z'"/>
</xsl:variable>
<xsl:variable name="timeZone">
<xsl:value-of select="'America/Los_Angeles'" />
</xsl:variable>
可变时间采用 UTC 格式,我想将其转换为本地时区。我正在使用以下内容,但这不起作用:
<xsl:value-of select="adjust-dateTime-to-timezone($time), xs:dayTimeDuration($timeZone))"/>
我的预期输出是:2020-12-26T09:33:11Z
解决方案
XSLT/XPath 中几乎所有的日期/时间/时区功能都基于绝对数字时区偏移量,例如 -05:00,而不是基于 CET 或 America/Los_Angeles 等民用时区。一个例外是 format-dateTime(),它旨在格式化数据以供人类消费。format-dateTime() 的第五个参数是“place”:XPath 3.1 说:
如果 $place 参数以实现识别的 IANA 时区名称的形式提供,则格式化的日期或时间将调整为适用于该时区的时区偏移量。例如,如果 xs:dateTime 值 2010-02-15T12:00:00Z 的格式设置为 $place 参数设置为 America/New_York,则输出将与值 2010-02-15T07:00:00- 一样05:00 已提供。这种调整尽可能将夏令时考虑在内;如果所讨论的日期在纽约的夏令时期间,则将其调整为时区偏移量 -PT4H 而不是 -PT5H。仅当值包含日期且日期在时区数据库涵盖的范围内时,才可以使用夏令时进行调整。
请注意,这是 XPath 3.x 中的新功能;2.0 规范只允许使用国家/地区代码,并且对其含义模糊得多。
推荐阅读
- javascript - Javascript数组反向混淆
- javascript - 具有复杂表/数据的 expandAll() 非常慢
- r - 基于部分重复组合数据框中的行
- r - 如果需要,仅在循环中创建新列
- node.js - NodeJs 与 Visual Studio 代码问题一起运行
- kubernetes - Kubernetes ClusterIP 服务是否可以从集群外部访问?
- r - 通过在 data.table 中处理的复杂组
- java - 嗨,我正在尝试学习 Selenium 自动化并收到此错误:无法初始化主类 org.testng.remote.RemoteTestNG
- java - 如何修复休眠未知实体异常?
- excel - 在 Excel VBA 中有没有办法编辑 MsgBox、vbYesNo 按钮标题?