我在这里遇到麻烦。花了我几个小时但没有用。请记住,我检查了StackOverFlow的问题,但是没有任何修复。
当我将_date
对象从Gregorian
转换为Hijri
时,它不会转换。我知道,因为当我打印它时它仍然给我Gregorian
天。这让我感到很麻烦,因为我想setDate
UIDatePicker
并且设置错误,因为_date
是gregorian
而我的UIDatePicker
对象日历设置为{{ 1}}
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
。我希望你们明白我的意思。
答案 0 :(得分:3)
NSDate
对象表示任何日历,时区或相对性无论的时刻(最后一个通常被认为是基于地球的非问题)计算机科学。)
当您通过任何方式创建NSDate
的实例时,它仅存储为自固定时间点以来的秒数(格林威治标准时间2001年1月1日凌晨00:00,以及iOS和OS X。)
因此,将日期从格里高利转换为Hijri不会做任何事情,因为固定时刻保持不变。
如果您具体告诉我们您希望在Gregorian和Hijri之间发生的尚未发生的转变,我们可以提出另一种行动方案。
答案 1 :(得分:1)
您根本不需要进行任何转换。
NSLog
打印对象的description
方法。由于NSDate
仅存储自参考日期以来的秒数,并且未跟踪其所属的日历,因此它使用格里高利历来格式化description
方法的日期。
自定义NSDateFormatter
以使用您的日历并使用stringFromDate:
获取您日期的本地化字符串值。