我正在使用NSDateFormatter
将格里奥戈里日期转换为回历日期,并使用setCalendar
方法将NSIslamicCalendar
设置为格式化程序日历 问题是结果回历字符串总是比实际日期多一天例如,如果我们使用以下代码将今天的 greg 日期转换为回历,输出将是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
请帮助我解决这些问题,提前感谢
伊斯兰日历很困难。显然,在可接受的使用中有不同的数学公式,导致不同的结果。此外,正确的日历是基于对月球的实际观测,根据您的位置和天气给出不同的结果(新月在某一天是否可见取决于天气;在晴朗的日子里,新月可能几乎看不见,而在阴天则看不到)。总之,可以有不同的数字都是"正确的"。
我建议尽可能多地阅读有关该主题的信息,然后弄清楚要显示的答案是什么。