Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XSL datetime,删除时区并将其压缩为时间_Datetime_Xslt_Timezone_Xslt 2.0 - Fatal编程技术网

XSL datetime,删除时区并将其压缩为时间

XSL datetime,删除时区并将其压缩为时间,datetime,xslt,timezone,xslt-2.0,Datetime,Xslt,Timezone,Xslt 2.0,我正在以标准UTC格式在XML结果中保存一些时间戳 我想能够做的是将其重新转换为人类可读的时间。没有时区补遗。到目前为止,我所能做到的是: format-dateTime( xs:dateTime( adjust-dateTime-to-timezone( xs:dateTime(@thevalue),xs:dayTimeDuration('P0DT4H') ) ),'[M01]/[D01]/[Y0001] [H01]:[m01]:[s01]' ) 其中@th

我正在以标准UTC格式在XML结果中保存一些时间戳

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

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。如果我剥开dateTime格式的一层以查看adjust dateTime函数返回的内容,它会给出

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


。。。我真正想看到的是21: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:sequence select=
   "adjust-dateTime-to-timezone($vDateTime,
                                xs:dayTimeDuration('P0DT4H')
                               )"/>
 </xsl:template>
</xsl:stylesheet>
2006-02-15T21:00:00+04:00
02/15/2006  21:00: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>

你的评论帮助我很好地理解了我的问题。我无法修改保存日期的格式(UTC,但没有+HHMM符号),但我可以通过将其转换为+00:00,然后应用+04:00,然后将dateTime调整为时区,然后设置格式,将其组合在一起。谢谢