NSDateFormatter с NSIslamicCalendar работает неправильно

Я конвертирую грегорианскую дату в дату по хиджре, используя NSDateFormatter с NSIslamicCalendar, установленным в качестве календаря форматирования, используя метод setCalendar, проблема в том, что результат строки хиджры всегда на один день больше, чем фактическая дата, например, если мы используем приведенный ниже код для преобразования сегодняшнего грега Дата Хиджры выход будет 18 Rabi' || 1435, что неверно, так как сегодня 17 Rabi' || 1435, я видел много сообщений для этой проблемы, таких как эти и эти я перепробовал все возможные решения в этих постах, но безрезультатно!! вот геттер для свойства hijriDateFormatter:

-(NSDateFormatter*)hijriDateFormatter{
if (!_hijriDateFormatter) {
    _hijriDateFormatter=[[NSDateFormatter alloc] init];
}

[_hijriDateFormatter setTimeZone:[NSTimeZone systemTimeZone]]; // i trie aslo to set TimeZone as localTimeZone
 _hijriDateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
[_hijriDateFormatter setDateFormat:@"dd MMMM, yyyy"];
[_hijriDateFormatter setCalendar:self.hijriCalendar];
return _hijriDateFormatter;

}

также геттер для свойства hijriCalendar:

-(NSCalendar*)hijriCalendar{
if (!_hijriCalendar) {
    _hijriCalendar=[[NSCalendar alloc] initWithCalendarIdentifier:NSIslamicCalendar];
}
return _hijriCalendar;
}

здесь я получаю преобразованный HijriDate в виде строки:

NSString *convertedHijriDate=[self.hijriDateFormatter stringFromDate:GregorianDate];

Учитывая, что GregorianDate — это сегодняшняя дата, а ее значение: 2014-02-17 09:48:47 +0000, пожалуйста, помогите мне в этом вопросе, заранее спасибо


person Java Player    schedule 17.02.2014    source источник


Ответы (1)


Исламские календари сложны. По-видимому, общепринято использовать разные математические формулы, которые приводят к разным результатам. Кроме того, правильный календарь основан на фактических наблюдениях за Луной, что дает разные результаты в зависимости от вашего местоположения и, например, погоды (видимость новолуния в данный день может зависеть от погоды). ; в погожий день новолуние может быть едва видно, а в пасмурный день его не видно). Таким образом, могут быть разные числа, которые все могут быть «правильными».

Я бы посоветовал прочитать как можно больше о предмете, а затем выяснить, какие ответы вы хотите отобразить.

person gnasher729    schedule 17.02.2014