2

我在这里遇到了麻烦。花了我几个小时,但没有用。请记住,我检查了 StackOverFlow 是否有修复,但没有。

当我将_date对象从Gregorian转换为时,Hijri它不会转换。我知道,因为当我打印它时,它仍然给了我Gregorian一天。这让我很困扰,因为我想要setDateaUIDatePicker并且它设置不正确,因为_dateisgregorian和我的UIDatePicker对象日历设置为setCalendar:_hijriCalendar

//DATE SETTING
_date = [NSDate date];
_hijriCalendar = [[NSCalendar alloc]initWithCalendarIdentifier:NSIslamicCalendar];
_gregCalendar = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];

unsigned units = NSYearCalendarUnit| NSMonthCalendarUnit | NSDayCalendarUnit;

NSDateComponents *currentDateComponents = [_hijriCalendar components:units fromDate:[NSDate date]];


NSDate *islamicDate =[_hijriCalendar dateFromComponents:currentDateComponents];

NSLog(@" Current Date: %@",islamicDate);  //this outputs gregorian current date not Hijri

注意:伙计们,我不想只打印日期。我知道使用一NSDateFotmatter组正确的NSCalendar对象可以完成这项工作。但我想将日期转换为新日期以将其设置为我的UIDatePicker. 我希望你们明白我的意思。

4

2 回答 2

3

一个NSDate物体代表一个时刻,与任何日历、时区或相对论无关(最后一个通常被认为是基于地球的计算机科学中的非问题。)

当您通过任何方式创建实例时NSDate,它仅存储为自固定时间点以来的秒数(对于 iOS 和 OS X,2001 年 1 月 1 日格林威治标准时间上午 12:00)。

因此,将日期从公历转换为回历不会任何事情,因为固定时刻保持不变。

如果您具体告诉我们您希望公历和回历之间发生的尚未发生的转换,我们可以建议另一种行动方案。

于 2012-10-31T13:54:38.120 回答
1

您根本不需要进行任何转换。

NSLog打印对象的description方法。由于NSDate仅存储自参考日期以来的秒数,并且不跟踪其所属的日历,因此它使用公历来格式化description方法的日期。

自定义NSDateFormatter以使用您的日历并用于stringFromDate:获取日期的本地化字符串值。

于 2012-10-31T13:22:22.473 回答