Existe-t-il une façon moins clémente de trouver la différence en jours entre deux dates dans xslt? Si oui pouvez-vous me pointer dans la bonne direction. Je reçois des dates au format mm/jj/aaaa.Trouver la différence entre 2 dates dans xslt
Répondre
Utilisez XSLT 2.0 (XPath 2.0) pour cette:
<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>
lorsque cette transformation est appliquée sur le document XML suivant:
<t>
<d1>04/06/2011</d1>
<d2>01/11/2010</d2>
</t>
le résultat recherché, correct (la différence est de 450 jours) est produit:
450
la seule solution là-bas qui m'a aidé avec des dates sur OSB – Tol182
Une autre réponse parfaite - https://stackoverflow.com/questions/38604414/finding-the-difference-between-two-datetimes-in-xslt –
Une alternative plus agréable (et plus courte) pour XSLT 1.0 est de calculer les dates juliennes équivalentes et de les soustraire.
Modèle:
<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"/>
Utilisation:
<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>
Répétez l'opération pour la deuxième date et vous aurez deux entiers. Ensuite, il suffit de les soustraire.
Cela pourrait se faire facilement en utilisant l'expression suivante:
days-from-duration(xs:date('yyyy-MM-dd')-xs:date('yyyy-MM-dd'))
Par exemple:
days-from-duration(xs:date('2012-06-30')-xs:date('2012-06-18'))
donnera suite à
- 1. trouver la différence entre 2 dates
- 2. Différence entre 2 dates Java
- 3. Comment trouver la différence entre deux dates
- 4. Heure Différence entre 2 dates dans Zend
- 5. PHP trouver la différence entre deux dates
- 6. XSLT - Différence entre 2 variables XML
- 7. Différence entre 2 dates en quelques secondes
- 8. Pour faire une différence entre 2 dates
- 9. trouver la différence entre 2 branches distantes
- 10. Trouver la différence entre 2 lignes spécifiques
- 11. comment trouver fifférence entre 2 dates dans DB2
- 12. trouver des correspondances entre 2 dates opérations
- 13. Trouver la différence entre les dates en Javascript (Calendrier Yui)
- 14. différence entre deux dates
- 15. La différence entre deux dates
- 16. Différence entre les dates
- 17. différence entre les dates
- 18. Comment trouver la différence entre deux dates en oracle?
- 19. différence entre les dates données
- 20. Problème de trouver la différence en jours entre deux dates
- 21. trouver la différence entre 2 fichier texte dans c
- 22. Différence entre les dates
- 23. requête SQL pour trouver moyenne de différence entre les dates
- 24. Différence entre deux dates sqlite
- 25. Obtenir le nombre de jours de différence entre 2 dates
- 26. Comment calculer la différence entre deux dates
- 27. UIDatePicker - Différence entre 2 dates en heures: minutes
- 28. Comment trouver la différence entre les 2 rangs
- 29. date différence entre deux dates
- 30. comment trouver l'année et le mois différence entre deux dates?
Êtes-vous coincé avec XSLT 1 ou pouvez-vous utiliser XSLT2? –
Dans XSLT 1.0, EXSLT 'date: difference' est implémenté par Jeni Tennison à l'adresse http://www.exslt.org/date/functions/difference/date.difference.template.xsl –
Je vous recommande d'utiliser XSLT 2.0/XPath 2,0 pour cela. –