DateDiff depuis des mois à Umbraco
Question
J'essaie d'obtenir le nombre de mois entre deux dates dans mon fichier xslt comme suit:
<xsl:variable name="now" select="umbraco.library:CurrentDate()"/>
<xsl:value-of select="umbraco.library:DateDiff('2010-12-01', $now, 'm')" />
Malheureusement, cela semble me donner le nombre de minutes entre les deux dates plutôt que le nombre de mois. Je ne trouve nulle part la chaîne à entrer comme troisième paramètre pendant des mois. Y a-t-il une référence pour cela quelque part? Ou comment trouver le nombre de mois?
La solution
La méthode DateDiff ne prend pas en charge les mois.
Il ne prend en charge que les années, les minutes ou les secondes.
Pour calculer la différence en mois, vous devrez jongler avec les mathématiques, utiliser une méthode inline c # ou écrire votre propre méthode d’extension XSLT.
Plus d'informations sur le c # en ligne
Il existe de nombreux tutoriels pour la création de méthodes d’extension XSLT, y compris plusieurs tutoriels vidéo sur le site principal de Umbraco.
Autres conseils
J'ai fini par écrire ma propre fonction comme suggéré par Tim:
public static int MonthDiff(string date1, string date2)
{
DateTime dt1 = DateTime.Parse(date1);
DateTime dt2 = DateTime.Parse(date2);
return ((dt2.Year - dt1.Year) * 12) + (dt2.Month - dt1.Month);
}
Je suis sûr que cela pourrait être mieux généralisé, mais cela me suffisait.