2012-12-16 10 views

risposta

7

Sì - qualsiasi momento DateTime viene convertito in una stringa con nessuna cultura esplicito specificato, verrà utilizzato il sistema del calendario della cultura correnti. Tuttavia, gli stessi componenti DateTime riflettono il calendario gregoriano.

Vedrete il 2555 se si utilizza:

int thaiYear = new ThaiBuddhistCalendar().GetYear(DateTime.Now); 

In sostanza, se si vuole ottenere specifici cultura informazioni aggiornate a livello di codice, è necessario utilizzare un System.Globalization.Calendar. Durante la formattazione di una data, assicurati di specificare la giusta cultura per il calendario che desideri utilizzare.

+1

Ma perché ha due valori diversi, '2555 e 2012'? Non dovrebbero entrambi essere 2555 o uguale? – Kaf

+2

@Kaf: No, perché come ho detto nella seconda frase della mia risposta, 'DateTime' riporta sempre i valori secondo il calendario gregoriano. Un valore 'DateTime' non" sa "in quale calendario deve essere interpretato, quindi assume sempre gregoriano. –

+1

@Kaf La conversione in stringa utilizza il calendario corrente, ma proprietà come 'Anno' no. – CodesInChaos

1

I Thai hanno un calendario diverso.

Lasciami citazione:

There is a 543 years difference between the Buddhist calendar and the Gregorian calendar. Year 2012 in Europe is year 2555 in Thailand.

Da http://www.thaiworldview.com/feast/feast.htm