我正在使用NSDateFormatter
使用NSIslamicCalendar
将Greogorian日期转换为Hijri日期,并使用setCalendar
方法作为格式化程序日历,问题是结果Hijri String总是超过一天实际日期,例如,如果我们使用下面的代码将今天的格雷格日期转换为Hijri,那么输出将是18 Rabi' || 1435
,这是错误的,因为今天是17 Rabi' || 1435
,我看到很多关于这些问题的帖子,如{{} 3}}和these我在这些帖子中尝试了所有可能的解决方案,但没有意思!这是hijriDateFormatter属性的getter:
-(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
请在这些问题上帮助我,提前谢谢
答案 0 :(得分:0)
伊斯兰日历很难。在公认的使用中存在明显不同的数学公式,这导致不同的结果。此外,正确的日历基于对月球的实际观测,根据您的位置给出不同的结果,例如天气(在给定的一天是否可以看到新月取决于天气;在晴朗的一天,新的月亮可能几乎看不到,而在阴天则无法看到。总之,可以有不同的数字都可以“正确”。
我建议你尽可能多地阅读这个主题,然后找出你想要展示的答案。