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?

È stato utile?

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.

Ulteriori informazioni sulle estensioni XSLT

Video Umbraco su estensioni XSLT

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top