You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XSLT中如何将带不同偏移的PST时间转换为UTC?

问题描述

我在XSLT中通过以下代码输出时间戳:

<time_stamp><xsl:value-of select="format-dateTime(wd:Last_Functionally_Updated, '[M01]/[D01]/[Y0001] [H01]:[m01]:[s01]')"/></time_stamp>

但源字段<wd:Last_Functionally_Updated>为PST时区时间,部分时间带-07:00偏移(PDT夏令时),部分带-08:00偏移(PST标准时)。我尝试使用adjust-dateTime-to-timezone函数加PT1H偏移转换,但仅对-07:00的时间有效,也考虑过截取时区部分但未成功,请问如何正确将这些时间转换为UTC?

解决方案

不需要手动判断或添加固定偏移量,adjust-dateTime-to-timezone函数可以自动识别源日期时间的时区信息并完成转换:

  1. 核心逻辑:直接将目标时区指定为UTC(PT0H),函数会根据源字段自带的-07:00或-08:00偏移,自动计算对应的UTC时间。
  2. 完整代码示例:
<time_stamp>
  <xsl:value-of select="format-dateTime(
    adjust-dateTime-to-timezone(wd:Last_Functionally_Updated, xs:timezone('PT0H')),
    '[M01]/[D01]/[Y0001] [H01]:[m01]:[s01]'
  )"/>
</time_stamp>

补充说明

如果遇到部分源字段不带时区信息的极端情况,可以先通过has-timezone()判断,再手动指定PST时区后转换:

<time_stamp>
  <xsl:variable name="date-with-tz" select="
    if (has-timezone(wd:Last_Functionally_Updated)) then
      wd:Last_Functionally_Updated
    else
      adjust-dateTime-to-timezone(wd:Last_Functionally_Updated, xs:timezone('-PT8H'))
  "/>
  <xsl:value-of select="format-dateTime(
    adjust-dateTime-to-timezone($date-with-tz, xs:timezone('PT0H')),
    '[M01]/[D01]/[Y0001] [H01]:[m01]:[s01]'
  )"/>
</time_stamp>

内容的提问来源于stack exchange,提问作者Velsus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 04:27:09