2011-12-22 15 views
2

DateTime型のコンストラクタに渡されたCalendarオブジェクトの正しい動作は何ですか? Hijriとグレゴリオ暦のDateTimeコンストラクタ

私は、以下の例のような構成要素の年、月、日を持っている:

day = 1 
month = 5 
year = 1433 (which is the current Hijri year) 

使用しながら、結果が有効グレッグ日

HijriCalendar hijri = new HijriCalendar(); 
//Get the First Day in the Month 
DateTime firstDayInMonth = new DateTime(1433, month, 1, hijri); 

で以下のコードを使用してDateTimeオブジェクトを作成します以下のコードは有効なHijri日付を生成します:

GregorianCalendar greg = new GregorianCalendar(); 
//Get the First Day in the Month 
DateTime firstDayInMonth = new DateTime(1433, month, 1, greg); 

は正しいresウルトラ?

+0

特定の日付が両方のカレンダーにあることを確認すると、問題は何ですか? – Oded

+0

あなたはHijriをグレゴリオ暦に変換しようとしていますか?あなたがHijri年1433に入った場合、2011年のグレゴリオ暦は得られますか? – ChrisBD

+0

@ChrisBD:はいヒジリと見なされるコンポーネントを渡してグレゴリオ暦の日付を取得したいとします。 – SShebly

答えて

2

最初の例は正しいです。 DateTimeはHijri形式ではありません。あなたが与えたものと同じ標準化されたものになります。 Hirji日付を取得する方法については、以下のコードを参照してください:

HijriCalendar hijri = new HijriCalendar(); 
DateTime firstDayInMonth = new DateTime(1433, 10, 11, hijri); 
Console.WriteLine(hijri.GetEra(firstDayInMonth)); // 1 
Console.WriteLine(hijri.GetYear(firstDayInMonth)); // 1433 
Console.WriteLine(hijri.GetMonth(firstDayInMonth)); // 10 
Console.WriteLine(hijri.GetDayOfMonth(firstDayInMonth)); // 11 

コードのあなたの第二のブロックは単にグレゴリオ暦の日付「1433年1月1日」を設定しましたので、あなたがhirjiを取得していなかったことを検査したところあなたは15世紀に与えた日付をちょうど得ていました。

http://msdn.microsoft.com/en-us/library/system.globalization.hijricalendar.aspxを見て、メソッドを見ると、カレンダーオブジェクトで何をすべきか、そしてDateTimeオブジェクトで何が起こるべきかがわかります。

0

あなたは実際に有意義な質問をしていません。特定の日付をあるカレンダーから別のカレンダーに変換しようとすると、ヒジリカレンダーのすべてがグレゴリオ暦とは異なる月になってから、日付以上のものが変更されます。

この例ではsiteをご覧ください。ダウンロード可能なコードもあります。

+0

私の質問は自己についての日付ではなく、その理由についてグレゴリオ暦のカレンダーを渡すとヒジリの日付.. – SShebly

+0

@SShebly - 'DateTime'は' DateTime'です。カレンダーは付いていません。 – Oded

関連する問題