DateDiff per mesi a Umbraco
Domanda
Sto cercando di ottenere il numero di mesi tra due date nel mio file xslt in questo modo:
<xsl:variable name="now" select="umbraco.library:CurrentDate()"/>
<xsl:value-of select="umbraco.library:DateDiff('2010-12-01', $now, 'm')" />
Sfortunatamente, questo sembra darmi il numero di minuti tra le due date piuttosto che il numero di mesi. Non riesco a trovare da nessuna parte la stringa da inserire come terzo parametro per mesi. Ci sono riferimenti per questo da qualche parte? O come posso trovare il numero di mesi?
Soluzione
Il metodo DateDiff non supporta i mesi.
Supporta solo anni, minuti o secondi.
Per calcolare la differenza in mesi dovrai fare qualche giocoleria matematica o usare un metodo c # inline o scrivere il tuo metodo di estensione XSLT.
Ulteriori informazioni su inline c #
Esistono molti tutorial per la creazione di metodi di estensione XSLT, inclusi diversi tutorial video sul sito principale di Umbraco.
Altri suggerimenti
Ho finito per scrivere la mia funzione come suggerito da 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);
}
Sono sicuro che potrebbe essere meglio generalizzato, ma questo è stato abbastanza buono per me.