2011-11-25 9 views
6

Eventuali duplicati:
GetMonthName: Valid values are between 1 and 13, inclusive. Why?Perché DateTimeInfo.MonthNames restituisce un membro 13?

Il seguente codice:

DateTimeFormatInfo datetimeinfo = new CultureInfo("en-GB", false).DateTimeFormat; 
string[] months = datetimeinfo.MonthNames; 

rendimenti 13 membri, con 0 essendo gennaio e il 13 di essere una stringa vuota.

Perché è questo?

Non è un grosso problema in quanto posso rimuovere solo l'ultimo membro, ma mi chiedevo solo se c'era un punto in esso.

+1

A quanto pare per supportare i calendari in base ai mesi lunari, vedere qui: http://stackoverflow.com/questions/5991766/getmonthname-valid-values-are-between-1-and-13-inclusive-why –

risposta

6

Alcuni calendari, in particolare lo Hebrew, possono avere 13 mesi. Questo tende ad essere in calendari lunisolar che usano i mesi lunari, e quindi aggiungere un mese in più ogni pochi anni per evitare che l'inizio dell'anno cambi troppo rispetto all'anno solare.

+0

Ma per il La cultura ebraica, 'MonthNames' restituisce anche 12 mesi" reali "e uno vuoto ... –

+0

@Thomas Levesque potrebbe essere semplicemente una" caratteristica "dell'implementazione della SM. Ad esempio la funzione che converte una stringa in title case (gran bretagna => Gran Bretagna) funziona allo stesso modo per la lingua russa, mentre in realtà in russo è corretto capitalizzare solo la prima lettera della prima parola (gran bretagna => Grande Gran Bretagna). –