我必须在Objective C类中确定星期几。试图使用这种方法:
- (NSUInteger)ordinalityOfUnit:(NSCalendarUnit)smaller
inUnit:(NSCalendarUnit)larger
forDate:(NSDate *)date;
这是我的代码:
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
(int) [gregorian ordinalityOfUnit:NSCalendarUnitWeekday inUnit:NSCalendarUnitWeekday forDate:[NSDate date]];
它总是返回-1,无论它是什么日子。即使我改变日期,或循环整整一周。但是,使用此方法,它运作良好:
- (NSDateComponents *)components:(NSCalendarUnit)unitFlags
fromDate:(NSDate *)date;
到现在为止还挺好。唯一的问题是:不推荐使用此方法(在iOS 8.0中首次弃用,因此很久以前)。有点害怕使用旧的弃用方法进行生产。有没有办法使(甚至非常)新方法有效?
来自ordinalityOfUnit:inUnit:forDate:
文档:
对于给定的绝对时间,返回指定的较大日历单位(例如一周)内较小日历单位(例如一天)的序号。
您为前两个参数指定了相同的单位,您需要指定第一个的日期和第二个的星期:
[gregorian ordinalityOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitWeekOfMonth forDate:[NSDate date]]
HTH