在XSLT中向DateTime添加持续时间

时间:2011-03-11 15:18:19

标签: datetime xslt date time

在XSLT中,我想将XML文档转换为另一个XML文档。旧文档有一些不太容易使用的日期和时间。例如:

<foo date="20110310" time="002000" duration="001500"/>

现在我提取了所有信息,并且能够将这些信息转换为ISO 8601日期:

<xsl:variable name="begin" select='concat($begin_date_year, "-", $begin_date_month, "-", $begin_date_day, "T", $begin_time_hour, ":", $begin_time_minutes, ":", $begin_time_seconds)'/>
--> $begin = 2011-03-10T00:20:00

持续时间:

<xsl:variable name="duration" select='concat("PT", $dur_hour, ":", $dur_minutes, ":", $dur_seconds)'/>
--> $duration = PT00:15:00

如何将持续时间添加到DateTime 以查找结尾(以DateTime格式)?

我已经考虑过添加单个组件,但这会涉及大量摆弄模数,例如,如果我在23:50加15分钟然后不得不相应地调整日期等等。

2 个答案:

答案 0 :(得分:6)

好的,现在我found a function未在我之前使用过的函数参考中列出。

add-dayTimeDuration-to-dateTime(xs:dateTime, xs:dayTimeDuration)

这也可以写成,例如:

xs:dateTime($begin) + xs:dayTimeDuration($duration)

答案 1 :(得分:0)

为了完整起见,http://www.exslt.org/date/functions/add/date.add.html

还有一个实现

xslt - subtracting days

上查看类似的问题