Хиджры и григорианский конструктор DateTime - PullRequest
2 голосов
/ 22 декабря 2011

Какое правильное поведение для Календаря возражают, переданного в конструктор типа 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);

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

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

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

Ответы [ 2 ]

3 голосов
/ 22 декабря 2011

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

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

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

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

0 голосов
/ 22 декабря 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...