NSCalendar ordinalityOfUnit 没有正确 return 星期几
NSCalendar ordinalityOfUnit doesn't return the day of the week correctly
我必须在 Objective C class 中确定星期几。
尝试使用此方法:
- (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]];
它总是returns-1,不管是哪一天。即使我改变了日期,或者循环了整整一周。
但是,使用这种方法,效果很好:
- (NSDateComponents *)components:(NSCalendarUnit)unitFlags
fromDate:(NSDate *)date;
到目前为止一切顺利。唯一的问题是:此方法已弃用(在 iOS 8.0 中首次弃用,很久以前)。
有点害怕使用旧的已弃用方法进行生产。有没有办法使(甚至不是很)新方法起作用?
来自 ordinalityOfUnit:inUnit:forDate:
文档:
Returns, for a given absolute time, the ordinal number of a smaller calendar unit (such as a day) within a specified larger calendar unit (such as a week).
您为前两个参数指定了相同的单位,您需要为第一个参数指定天,第二个参数指定周:
[gregorian ordinalityOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitWeekOfMonth forDate:[NSDate date]]
HTH
我必须在 Objective C class 中确定星期几。 尝试使用此方法:
- (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]];
它总是returns-1,不管是哪一天。即使我改变了日期,或者循环了整整一周。 但是,使用这种方法,效果很好:
- (NSDateComponents *)components:(NSCalendarUnit)unitFlags
fromDate:(NSDate *)date;
到目前为止一切顺利。唯一的问题是:此方法已弃用(在 iOS 8.0 中首次弃用,很久以前)。 有点害怕使用旧的已弃用方法进行生产。有没有办法使(甚至不是很)新方法起作用?
来自 ordinalityOfUnit:inUnit:forDate:
文档:
Returns, for a given absolute time, the ordinal number of a smaller calendar unit (such as a day) within a specified larger calendar unit (such as a week).
您为前两个参数指定了相同的单位,您需要为第一个参数指定天,第二个参数指定周:
[gregorian ordinalityOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitWeekOfMonth forDate:[NSDate date]]
HTH