在XSLT中向DateTime添加持续时间

slh*_*hck 4 xslt time datetime date

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

<foo date="20110310" time="002000" duration="001500"/>
Run Code Online (Sandbox Code Playgroud)

现在我提取了所有信息,并能够将这些信息转换为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
Run Code Online (Sandbox Code Playgroud)

并持续时间:

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

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

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

slh*_*hck 6

好的,现在我找到了一个我以前用过的函数引用中没有列出的函数.

add-dayTimeDuration-to-dateTime(xs:dateTime, xs:dayTimeDuration)
Run Code Online (Sandbox Code Playgroud)

这也可以写成,例如:

xs:dateTime($begin) + xs:dayTimeDuration($duration)
Run Code Online (Sandbox Code Playgroud)