如何在XSLT 1.0中将currentDateTime转换为UTC时区?
解决XSLT中将current-dateTime转换为UTC格式的问题
要把current-dateTime()获取的带时区时间转成UTC格式(如2025-03-06T16:16:36.808Z),需要分两步处理:先将时间调整到UTC时区,再按目标格式输出,具体实现如下:
正确的XSLT代码
<xsl:value-of select="format-dateTime( adjust-dateTime-to-timezone(current-dateTime(), xs:dayTimeDuration('PT0S')), '[Y0001]-[M01]-[D01]T[H01]:[m01]:[s01].[f000]Z' )"/>
代码说明
- 时区转换:
adjust-dateTime-to-timezone(current-dateTime(), xs:dayTimeDuration('PT0S'))会把当前时间转换为UTC时区(PT0S代表0小时的时区偏移,即UTC标准时间)。 - 格式控制:
[Y0001]:4位年份[M01]:2位月份[D01]:2位日期[H01]:24小时制的2位小时数[m01]:2位分钟数[s01]:2位秒数[f000]:3位毫秒数(匹配示例中的.808格式)- 末尾直接添加
Z,表示这是UTC时间
为什么之前的方法无效
你之前尝试的格式字符串存在两个问题:
- 没有先将时间转换为UTC时区,直接格式化原时区时间,导致时间数值不对。
- 格式字符串中使用了
-[H01].[m01]的分隔符(用点代替了冒号),以及[z](会输出时区偏移或缩写,而非固定的Z),不符合目标格式要求。
内容的提问来源于stack exchange,提问作者Viji
相关产品推荐
相关产品推荐

