2012-12-16 34 views

Odpowiedz

7

Tak - każdy czas DateTime jest konwertowana na ciąg bez wyraźnej kultury określony, będzie używać systemu kalendarza bieżącego kultura jest. Jednak komponenty DateTime same nadal odzwierciedlają kalendarz gregoriański.

Zobaczysz 2555, jeśli używasz:

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

Zasadniczo, jeśli chcesz otrzymywać aktualne informacje specyficzne kulturowo programowo, trzeba użyć System.Globalization.Calendar. Podczas formatowania daty upewnij się, że określasz odpowiednią kulturę dla kalendarza, którego chcesz użyć.

+1

Ale dlaczego ma dwie różne wartości, "2555 i 2012"? Czy nie powinni oni być 2555 czy to samo? – Kaf

+2

@Kaf: Nie, ponieważ, jak powiedziałem w drugim zdaniu mojej odpowiedzi, 'DateTime' samo w sobie zawsze zgłasza wartości zgodnie z kalendarzem gregoriańskim. Wartość 'DateTime' nie" wie ", do którego kalendarza ma być interpretowana, więc zawsze zakłada Gregorian. –

+1

@Kaf Konwersja na ciąg używa bieżącego kalendarza, ale właściwości takie jak "Rok" nie. – CodesInChaos