我想使用这个功能: 持续时间($ newDate - $ oldDate) 计算我的日期和当前日期()($ newDate)之间的差异。
我的问题是这个函数不会占用我的日期,这是double类型。 它的格式为:dd.mm.yyyy($ oldDate)
我的问题是如何将这种格式的双倍转换为日期,以便我可以使用此功能?
答案 0 :(得分:0)
30.10.2016
的值不能是 double 。如果这是您的输入所包含的内容,请将其视为字符串并提取各个组件以组合格式为YYYY-MM-DD
的有效日期。
考虑以下示例:
<强> XML 强>
<input>30.10.2016</input>
XSLT 2.0
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:my="http://www.example.com/my"
exclude-result-prefixes="xs my">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:function name="my:reformat-date">
<xsl:param name="datestring"/>
<xsl:variable name="y" select="substring($datestring, 7, 4)"/>
<xsl:variable name="m" select="substring($datestring, 4, 2)"/>
<xsl:variable name="d" select="substring($datestring, 1, 2)"/>
<xsl:sequence select="xs:date(concat($y, '-', $m, '-', $d))" />
</xsl:function>
<xsl:template match="/">
<difference>
<xsl:value-of select="days-from-duration(current-date() - my:reformat-date(input))"/>
</difference>
</xsl:template>
</xsl:stylesheet>
结果(今日适用,2016年11月22日)
<?xml version="1.0" encoding="UTF-8"?>
<difference>23</difference>
请注意,这假设输入的格式为DD.MM.YYYY
- 即一位数天和月的前导零。