我将以下时间存储在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 / 2010年3月,好像文件在创建前一天更新,显然不是这样。我该如何解决这个问题?
答案 0 :(得分:3)
XML文档中的create-time
和update-time
是正确的,但它们使用不同的时区:
create-time
位于UTC(也称为Zulu时间,因此为Z)。update-time
在太平洋时间。如果不同的代码片段设置了这个时间,甚至是使用不同库或函数的相同代码,则会发生这种情况。例如,如果您使用XForms中的XPath:
current-dateTime()
使用动态上下文中的时区,该时区通常是运行代码的计算机的当前时区。now()
始终返回UTC时间。 XPath中的解决方案是使用adjust-dateTime-to-timezone()
函数。这将标准化您的dateTimes,使它们处于相同的时区。例如,在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>