删除时区并将其压缩为时间



我将一些时间戳保存在我的XML结果中,以标准的UTC格式。

我想做的是将其重新转换为人类可读的时间。没有时区附录。到目前为止,我所能得到的是:

format-dateTime(
  xs:dateTime(
   adjust-dateTime-to-timezone(
      xs:dateTime(@thevalue),xs:dayTimeDuration('P0DT4H')
   )
  ),'[M01]/[D01]/[Y0001]  [H01]:[m01]:[s01]'
)

其中@thevalue类似于:2006-02-15T17:00:00

这让我很头疼,因为格式化程序返回的时间是17:00。如果我剥离format-dateTime的一层来查看adjust-dateTime函数返回的内容,它会给出

2006-02-15T17:00:00+04:00

…而我真正想看到的是21点……非常沮丧。有人以前处理过这个问题吗?

这是一个您想要的转换:

<xsl:stylesheet version="2.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:xs="http://www.w3.org/2001/XMLSchema">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:variable name="vDateTime" as="xs:dateTime"
  select="xs:dateTime('2006-02-15T17:00:00+00:00')"/>
 <xsl:template match="/">
  <xsl:sequence select=
   "adjust-dateTime-to-timezone($vDateTime,
                                xs:dayTimeDuration('P0DT4H')
                               )"/>
 </xsl:template>
</xsl:stylesheet>

当应用于任何XML文档(未使用)时,结果是:

2006-02-15T21:00:00+04:00

完整的解为:

<xsl:stylesheet version="2.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:xs="http://www.w3.org/2001/XMLSchema">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:variable name="vDateTime" as="xs:dateTime"
  select="xs:dateTime('2006-02-15T17:00:00+00:00')"/>
 <xsl:template match="/">
  <xsl:variable name="vadjustedDateTime" select=
   "adjust-dateTime-to-timezone($vDateTime,
                                xs:dayTimeDuration('P0DT4H')
                               )"/>
  <xsl:sequence select=
  "format-dateTime($vadjustedDateTime,
                   '[M01]/[D01]/[Y0001]  [H01]:[m01]:[s01]'
                   )
  "/>
 </xsl:template>
</xsl:stylesheet>

产生这个结果:

02/15/2006  21:00:00

相关内容

  • 没有找到相关文章

最新更新