我有两个变量,分别是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等)中实现它会简单得多