Objective c 将NSDate从日历转换为另一个日历
我这里有麻烦。花了我几个小时,但没用。请记住,我检查了StackOverFlow的检查以获得修复,但没有任何修复 当我将Objective c 将NSDate从日历转换为另一个日历,objective-c,nsdate,uidatepicker,nscalendar,Objective C,Nsdate,Uidatepicker,Nscalendar,我这里有麻烦。花了我几个小时,但没用。请记住,我检查了StackOverFlow的检查以获得修复,但没有任何修复 当我将\u date对象从Gregorian转换为Hijri时,它不会转换。我知道这一点,因为当我打印它的时候,它仍然给我一个格里高利日。这让我很烦恼,因为我想设置UIDatePicker的setDate,它设置不正确,因为\u date是gregorian,而我的UIDatePicker对象日历设置为setCalendar:\u hijriCalendar //DATE SETTI
\u date
对象从Gregorian
转换为Hijri
时,它不会转换。我知道这一点,因为当我打印它的时候,它仍然给我一个格里高利日。这让我很烦恼,因为我想设置UIDatePicker
的setDate
,它设置不正确,因为\u date
是gregorian
,而我的UIDatePicker
对象日历设置为setCalendar:\u 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
。我希望你们明白我的意思。你们根本不需要做任何转换
NSLog
打印对象的说明
方法。由于NSDate
只存储自参考日期起的秒数,并且不跟踪它所属的日历,因此它使用公历来格式化说明
方法的日期
自定义NSDateFormatter
以使用日历,并使用stringFromDate:
获取日期的本地化字符串值。您根本不需要进行任何转换
NSLog
打印对象的说明
方法。由于NSDate
只存储自参考日期起的秒数,并且不跟踪它所属的日历,因此它使用公历来格式化说明
方法的日期
自定义NSDateFormatter
以使用日历,并使用stringFromDate:
获取日期的本地化字符串值。一个NSDate
对象表示一个时间点,与任何日历、时区或相对性无关(最后一个问题通常被认为是地球计算机科学中不存在的问题。)
当您通过任何方式创建NSDate
的实例时,它仅存储为自某个固定时间点以来的秒数(对于iOS和OS X,2001年1月1日格林尼治标准时间上午12:00)
因此,将日期从公历转换为Hijri没有任何作用,因为固定的时刻保持不变
如果您具体告诉我们,您希望在格里高利和希吉里之间发生哪些尚未发生的转换,我们可以建议另一种做法。一个NSDate
对象代表一个时间点,而不考虑任何日历、时区或相对性(最后一个问题通常被认为是地球计算机科学中不存在的问题。)
当您通过任何方式创建NSDate
的实例时,它仅存储为自某个固定时间点以来的秒数(对于iOS和OS X,2001年1月1日格林尼治标准时间上午12:00)
因此,将日期从公历转换为Hijri没有任何作用,因为固定的时刻保持不变
如果您具体告诉我们,您希望在Gregorian和Hijri之间发生哪些尚未发生的转换,我们可以建议另一种做法。就是这样,我不想只打印。我使用打印来检查为什么我的UIDatePicker
未设置为正确的Hijri
日期。我知道设置NSDateFormatter
toHijriCalendar
将打印正确的日期。但是我想使用\u date
对象来设置我的UIDatePicker
猜测您在获取currentDateComponents
时打算使用\u HijriCalendar
的intead。换句话说,这将产生相同的e> NSDate
值。对吗?如果我使用\u gregCalendar
而不是\u HijriCalendar
我会得到值2574-06-20
和我的UIDatePicker毁灭日期。我只需要在\u HijriCalendar
中获得正确的日期,将其设置为我的UIDatePicker并解决这个问题“叹气”。这就是问题所在,我不想只打印。我使用打印来检查为什么我的UIDatePicker
未设置为正确的Hijri
日期。我知道将NSDateFormatter
设置为HijriCalendar
将打印正确的日期。但我想使用\u date
对象来设置我的UIDatePicker
猜测您打算在获取currentDateComponents
时使用\u gregCalendar
集成的\u hijriCalendar
。以其他方式,这将产生相同的NSDate
值。对吗?如果我使用\u gregCalendar
而不是\u hijriCalendar
,我会得到值2574-06-20
和我的UIDatePicker破产日期e、 我只需要在\u HijriCalendar
中获取正确的日期,将其设置为我的UIDatePicker并解决此问题“叹气”。这是一个很好的解释!我的问题主要出在UIDatePicker
上。今天Hijri的日期是15 Dul Hijja 1433。但是当我打开应用程序时,UIDatePicker
没有设置为默认的当前日期。它被设置为27 Dul Qidah 1433,这是一个月前的日期。尽管UIDatePicker
是setDate:[NSDate date date]iOS6和苹果修复了所有这些错误。但是在我的设备上,IOS5是一个麻烦的问题。因为OS的新版本解决了这个问题,它强烈地暗示了这是一个苹果发现并独立修复的bug。如果是这样的话,你应该考虑需要IOS 6。如果你必须支持iOS 5,请警告THA。t试图绘制日期的差异充满了危险,因为不能保证随着时间的推移,差异是恒定的。是的,但他们的日期选择器的许多应用程序在ios5上运行良好。我有一个问题,我不知道如何解决。让我给你这个