【问题标题】:Convert datetime in xslt在 xslt 中转换日期时间
【发布时间】:2017-06-23 21:44:22
【问题描述】:

如果我得到以下格式的 GMT 日期时间,我应该如何在 xslt 中转换日期时间

<date>2017-02-05T10:40:00+04:00</date>

output : 2017-02-05 14:40:00.000

【问题讨论】:

  • 什么版本的 XSLT?
  • "我得到了 GMT 的日期时间" 你确实没有得到 GMT 的日期时间。您将获得比 UTC 提前 4 小时的时区中的日期时间。为了得到对应的 UTC 日期时间,您需要 减去 4 小时,而不是相加。 -- 无论如何,答案取决于您使用的是 XSLT 1.0 还是 2.0。如果是 XSLT 1.0,告诉我们哪个处理器,以便我们知道可以使用哪些扩展函数,如果有的话。
  • 我正在使用 xslt 2.0。你是正确的需要根据转换因子加/减

标签: datetime xslt transform xslt-2.0


【解决方案1】:

在 XSLT 2.0 中,您可以:

<xsl:template match="date">
    <xsl:copy>
        <xsl:value-of select="adjust-dateTime-to-timezone(., xs:dayTimeDuration('PT0H'))"/>
    </xsl:copy>
</xsl:template>

转换:

<date>2017-02-05T10:40:00+04:00</date>

进入:

<date>2017-02-05T06:40:00Z</date>

【讨论】:

  • 当我只传递一个元素时,我能够做到这一点,但在传递整个 xml 时却无法做到。我是 xslt 解析新手,请帮忙
  • 您更新的问题毫无意义。你有一个命名模板,但你没有显示它是如何被调用的(如果有的话)。无论如何,它与原始问题无关。我建议您回滚您的编辑并针对您当前的问题发布一个新问题。
  • 对不起,如果我不清楚我在
  • 我仍然认为您应该将此作为新问题发布。但一般来说,您需要使用&lt;xsl:value-of select="adjust-dateTime-to-timezone(checkintime, xs:dayTimeDuration('PT0H'))"/&gt; 而不是&lt;xsl:value-of select="checkintime"/&gt; - 同样适用于chekouttime
  • 正如您所说,我已将其编辑回原始问题并发布了一个新问题。你能看一下吗? stackoverflow.com/questions/42097300/…
猜你喜欢
  • 2022-01-11
  • 2017-10-01
  • 1970-01-01
  • 2020-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多