xpath - 如何在 XPath 中使用不同时区标准化日期存储?

标签 xpath xforms

我在 XML 文档中存储了以下时间,它们对应于文档创建和更新的时间:

<create-time>2010-11-04T03:13:35.212Z</create-time>
<update-time>2010-11-03T20:18:26.331-07:00</update-time>

该文档是在晚上 8:13 创建的,然后在 5 分钟后的晚上 8:18 更新,但是当我使用 format-dateTime(xs:dateTime(.), '[ M]/[D]/[Y]'),我得到 11/4/2010 和 11/3/2010,就好像文档在创建前一天更新过一样,这显然不是案子。我该如何解决这个问题?

最佳答案

XML 文档中的 create-timeupdate-time 是正确的,但它们使用不同的时区:

  • 创建时间位于 UTC (也称为祖鲁时间,因此为 Z)。
  • 更新时间采用太平洋时间。

如果不同的代码片段设置了这个时间,或者甚至来自使用不同库或函数的相同代码,则可能会发生这种情况。例如,如果您使用 XForms 中的 XPath:

  • 使用 current-dateTime()使用动态上下文中的时区,这通常是运行代码的计算机的当前时区。
  • 使用 now()始终返回 UTC 时间。

XPath 中的解决方案是使用 adjust-dateTime-to-timezone()功能。这将使您的日期时间标准化,以便它们位于相同的时区。例如,在 XForms 输出中,要仅显示 create-time 的日期部分,您可以使用:

<xforms:output value="format-dateTime(adjust-dateTime-to-timezone(xs:dateTime(create-time)), '[M]/[D]/[Y]')">
    <xforms:label>Creation date</xforms:label>
</xforms:output>

关于xpath - 如何在 XPath 中使用不同时区标准化日期存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4090266/

相关文章:

xml - xsl :sort an XML file using multiple elements

python - 查找以文本长度为条件的特定 xpath Python Selenium

xpath - 如何计算 XPath 或 XQuery 中的加权平均值?

java - 使用 Orbeon XForms 将表单提交(发布)到 Java Servlet

variable-assignment - XSLTforms 或 betterForm 是否支持变量 (var)?

java - 按水平顺序展开单元格?

Java selenium xpath - 获取特定元素下的所有元素

xpath - 如何在xpath中检查 parent 的后继兄弟

xslt - XSL套用范本无法运作...可能是XPath错误

eclipse - Eclipse 的 XForms 编辑器(设计器)?