找到xslt中的2個日期之間的天數差異的kludgey方法嗎?如果是的話,你可以指出我的方向。我正在以mm/dd/yyyy的格式收到日期。尋找xslt中的2個日期之間的差異
7
A
回答
4
使用XSLT 2.0(XPath 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="my:my">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<xsl:variable name="vDate1"
select="my:dateFromUsDate(/*/d1)"/>
<xsl:variable name="vDate2"
select="my:dateFromUsDate(/*/d2)"/>
<xsl:sequence select=
"($vDate1 - $vDate2) div xs:dayTimeDuration('P1D')"/>
</xsl:template>
<xsl:function name="my:dateFromUsDate" as="xs:date">
<xsl:param name="pUsDate" as="xs:string"/>
<xsl:sequence select=
"xs:date(concat(substring($pUsDate,7,4),
'-',
substring($pUsDate,1,2),
'-',
substring($pUsDate,4,2)
)
)
"/>
</xsl:function>
</xsl:stylesheet>
當這種轉變是在下面的XML文檔應用:
<t>
<d1>04/06/2011</d1>
<d2>01/11/2010</d2>
</t>
想要的,正確的結果(相差450天)生產:
450
+1
唯一一個解決方案,那裏幫助我與OSB上的日期 – Tol182 2016-12-26 12:58:18
+0
另一個完美answser - https://stackoverflow.com/questions/38604414/finding-the-difference-between-two-datetimes-in-xslt – 2017-06-25 00:39:35
6
對於XSLT 1.0來說,更好(更短)的替代方法是計算等價Julian日期並將其減去。
模板:
<xsl:template name="calculate-julian-day">
<xsl:param name="year"/>
<xsl:param name="month"/>
<xsl:param name="day"/>
<xsl:variable name="a" select="floor((14 - $month) div 12)"/>
<xsl:variable name="y" select="$year + 4800 - $a"/>
<xsl:variable name="m" select="$month + 12 * $a - 3"/>
<xsl:value-of select="$day + floor((153 * $m + 2) div 5) + $y * 365 + floor($y div 4) - floor($y div 100) + floor($y div 400) - 32045"/>
用法:
<xsl:variable name="dateInv" select="'20120406'" />
<xsl:call-template name="calculate-julian-day">
<xsl:with-param name="year" select="substring($date,1,4)"/>
<xsl:with-param name="month" select="substring($date,5,2)"/>
<xsl:with-param name="day" select="substring($date,7,2)"/>
</xsl:call-template>
重複第二個日期,你就會有兩個整數。然後,簡單地減去它們。
6
這可以用如下的表達式可以很容易做到:
days-from-duration(xs:date('yyyy-MM-dd')-xs:date('yyyy-MM-dd'))
例如:
days-from-duration(xs:date('2012-06-30')-xs:date('2012-06-18'))
會給
相關問題
- 1. 尋找兩個時間戳與日期之間的差異
- 2. 2日期之間的差異
- 3. AngularJS 2日期之間的差異
- 4. Excel:查找日期之間的差異
- 5. 日期之間的差異
- 6. 日期之間的差異
- 7. 2個時間戳之間的日期和時間差異?
- 8. 在javascript中找到兩個日期時間之間的差異
- 9. 小數格式的2個日期時間之間的差異
- 10. Grails - 兩個日期之間的差異
- 11. VB - 兩個日期之間的差異
- 12. 兩個日期之間的差異
- 13. Javascript - 兩個日期之間的差異
- 14. 兩個表之間的日期差異
- 15. 兩個日期之間的差異
- 16. 兩個日期之間的差異python
- 17. 兩個日期之間的Ruby差異
- 18. 兩個日期()之間的JavaScript差異
- 19. 兩個日期之間的oracle差異
- 20. 兩個日期之間的差異
- 21. 兩個日期之間的差異Yii2
- 22. 在兩個日期之間的差異
- 23. 兩個Java日期之間的差異?
- 24. 兩個日期之間的Android差異?
- 25. Java:兩個日期之間的差異
- 26. 尋找名單之間的差異
- 27. Javascript日期差異在2日期之間的天
- 28. 如何找到兩個日期之間的星期差異
- 29. 從2個REF'd列獲取兩個日期之間的差異
- 30. 找到兩個日期時間之間的微小差異
結果你堅持XSLT 1或者你可以使用XSLT2? – 2011-04-04 22:22:12
在XSLT 1.0中,您有由Jeni Tennison在http://www.exslt.org/date/functions/difference/date.difference.template.xsl – 2011-04-04 22:42:12
實現的EXSLT'date:difference'我建議使用XSLT 2.0/XPath 2.0爲此。 – 2011-04-05 02:10:22