2012-12-16 11 views

答えて

7

はYesです - いつでもDateTimeが指定されていない明示的な文化を文字列に変換され、それが現在の文化のカレンダーシステムを使用します。しかし、DateTimeコンポーネント自体は、依然としてグレゴリオ暦を反映しています。あなたが使用している場合

あなたは2555年が表示されます:

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

を基本的に、あなたはプログラムでカルチャ固有の日付情報を取得したい場合、あなたはSystem.Globalization.Calendarを使用する必要があります。日付を書式設定するときは、使用するカレンダーに適切なカルチャを指定してください。

+1

しかし、なぜそれは2つの異なる値、 '2555&2012'を持っていますか?彼らはどちらも2555であっても同じであってはなりませんか? – Kaf

+2

@ Kaf:いいえ、答えの2番目の文で述べたように、 'DateTime'自体は常にグレゴリオ暦に従って値を報告します。 'DateTime'値はどのカレンダーを解釈するのかを「知る」ことができないので、常にグレゴリオ暦を仮定します。 –

+1

@Kaf文字列への変換は現在のカレンダーを使用しますが、「年」のようなプロパティは使用しません。 – CodesInChaos

1

タイには異なるカレンダーがあります。

がquote私をみましょう:

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

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

関連する問題