God*_*emo 24 iphone objective-c nsdate nsdateformatter
这是我发现自己花了几个小时才弄明白并因此想与你分享的事情.
问题是:如何确定特定日期的一年中的哪一天?
例如,1月15日是第15天,12月31日是第365天,而不是闰年.
Joh*_*lla 73
试试这个:
NSCalendar *gregorian =
[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSUInteger dayOfYear =
[gregorian ordinalityOfUnit:NSDayCalendarUnit
inUnit:NSYearCalendarUnit forDate:[NSDate date]];
[gregorian release];
return dayOfYear;
Run Code Online (Sandbox Code Playgroud)
这里date
是你要确定一年的一天的日期.NSCalendar.ordinalityOfUnit方法的文档就在这里.
因此,我提出的解决方案非常简洁,并没有任何复杂的问题.
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"D"];
NSUInteger dayOfYear = [[formatter stringFromDate:[NSDate date]] intValue];
[formatter release];
return dayOfYear;
Run Code Online (Sandbox Code Playgroud)
我花了这么长时间才弄清楚这里的技巧是使用NSDateFormatter."D"是一年中的标志.
希望这对你有同样问题的人有所帮助.
使用 ARC 并替换已弃用的符号,John Feminella 的答案如下所示:
NSCalendar *greg = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];
NSUInteger dayOfYear= [greg ordinalityOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitYear forDate:[NSDate date]];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11509 次 |
最近记录: |