Hijri и григорианский конструктор DateTime

каково правильное поведение для объекта Calendar, переданного конструктору типа DateTime?

У меня есть компоненты год, месяц и день, как показано ниже:

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

при создании объекта datetime с использованием приведенного ниже кода результат является действительной датой Грега

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

при использовании приведенного ниже кода генерируется действительная дата Hijri:

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

это правильный результат?

Ваш первый пример правильный. DateTime не будет в формате Hijri, это будет стандартизированный эквивалент того, что вы ему дали. См. Следующий код для получения даты Хиржи:

 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 

Ваш второй блок кода просто устанавливал gregorian date «1/1/1433», поэтому, когда вы проверяли его, вы не получали дату хиржи, вы просто получали дату, которую вы дали в 15 веке.

Если посмотреть на http://msdn.microsoft.com/en-us/library/system.globalization.hijricalendar.aspx и увидеть методы там, вы должны лучше понять, что вы должны делать на календарном объекте и что должно произойти в объекте DateTime.

На самом деле вы не задали значимого вопроса. Если вы пытаетесь преобразовать заданную дату из одного календаря в другой, то больше, чем дата изменится, ведь у календаря Hijri есть разные месяцы для gregorian.

Проверьте этот сайт на примерах – он даже имеет загружаемый код.