如何用swift找到一年中的天数?有没有一种我没有看到的简单方法,或者我必须找到从1月1日到当前日期的秒数并除以一天中的秒数?
如何计算任何日历的一年中的天数,而不仅仅是格里高利.我试过这个
NSUInteger *days = [[NSCalendar currentCalendar] rangeOfUnit:NSDayCalendarUnit inUnit:NSYearCalendarUnit forDate:[NSDate date]];
但这给了我当月的天数而不是当年的天数.
我正在为iPhone编写一个GTD应用程序.对于应有的任务,我希望显示诸如"明天到期"或"到期日"或"到期7月18日"之类的内容.显然,即使任务距离不到24小时,我也需要显示"明天"(例如,用户在星期六晚上11点检查并看到周日早上8点有任务).所以,我写了一个方法来获取两个日期之间的天数.这是代码......
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd-HH-mm"];
NSDate *nowDate = [dateFormatter dateFromString:@"2010-01-01-15-00"];
NSDate *dueDate = [dateFormatter dateFromString:@"2010-01-02-14-00"];
NSLog(@"NSDate *nowDate = %@", nowDate);
NSLog(@"NSDate *dueDate = %@", dueDate);
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *differenceComponents = [calendar components:(NSDayCalendarUnit)
fromDate:nowDate
toDate:dueDate
options:0];
NSLog(@"Days between dates: %d", [differenceComponents day]);
Run Code Online (Sandbox Code Playgroud)
......这是输出:
NSDate *nowDate = 2010-01-01 15:00:00 -0700
NSDate *dueDate = 2010-01-02 14:00:00 -0700
Days between dates: 0
Run Code Online (Sandbox Code Playgroud)
如您所见,该方法返回不正确的结果.它应该返回1作为两天之间的天数.我在这做错了什么?
编辑:我写了另一种方法.我没有进行过广泛的单元测试,但到目前为止似乎有效:
+ (NSInteger)daysFromDate:(NSDate *)fromDate inTimeZone:(NSTimeZone *)fromTimeZone untilDate:(NSDate *)toDate inTimeZone:(NSTimeZone *)toTimeZone {
NSCalendar *calendar = …
Run Code Online (Sandbox Code Playgroud) 可能重复:
如何计算目标C中特定日期的一年中的某一天
我需要获得一年中的当天数,并且不知道哪个是最好的方法.
例:
21-jan-2012 - > 21
2-feb-2012 - > 33
2012年3月2日 - > 62
2011年3月2日 - > 61
有任何想法吗?
谢谢
nsdate ×3
ios ×2
iphone ×2
cocoa ×1
cocoa-touch ×1
days ×1
leap-year ×1
numbers ×1
objective-c ×1
swift ×1