xslt时间-日期转换



我有两个变量,分别是putdate和puttime(格式为HHMMSTH)。这两个变量取自mqmd头。

<xsl:variable name="putdate">
        <xsl:value-of select="'20051114'"/>
      </xsl:variable>
      <xsl:variable name="puttime">
        <xsl:value-of select="'10594016'"/>
      </xsl:variable>

推杆时间的格式为HHMMSTH

HH
Hours (00 to 23)
MM
Minutes (00 to 59)
SS
Seconds (00 to 59)
T
Tenths of a second (0 to 9)
H
Hundredths of a second (0 to 9).

我有第三个变量,增量时间,以毫秒为单位,在本例中是1990毫秒。我需要xslt做的是在推杆时间上加上1990毫秒的值,我想下面是的步骤

1) Take the 10th value, which is 9(from 1990), then add to puttime's H, which makes it 10594025(9+6=15)
2)Take the 100th value, which is 9(from 1990), then add to puttimes's T, which makes it 10594115(9+2=11)
3)Take the 1000th value, which is 1(from 1990), then add to puttime's SS, which makes it 10594215

结果时间为10594315。xslt的输出应该是"2005-11-14 10:59:42:15"(实际上是GMT),转换为山地时间。

XSLT1.0没有任何内置的时间值支持。为了能够添加到时间值,您必须自己实现所有溢出逻辑。

  • 分数≥100⇒增量秒
  • 秒≥60⇒增加分钟数
  • 分钟≥60⇒增加小时数
  • 小时≥24⇒增加天数
  • 天数≥28、29、30或31⇒递增月份
  • 月份≥12⇒递增年份

然后你还必须处理DST规则,否则当切换日期过去时,值会被打乱。如果你真的实现了它,它最终将成为一个巨大的、无法维护的代码块。

在XSLT2.0中,您有xs:dateTime类型(以及类似类型),可以为您进行计算。在XSLT2.0中,甚至在命令式编程语言(Java、C#、Python等)中实现它会简单得多

相关内容

  • 没有找到相关文章

最新更新