例如:
我想要在2011年11月21日至2013年5月15日期间每月16日过多少次.
在这种情况下,它将是17.
我一直在努力解决这个问题.我知道如何解决这个问题的唯一方法是编写一堆if语句来检查已经过了多少年,然后已经过了多少个月等等.有没有更快的方法,比如使用NSDate或其他什么?
解决方法 好的,这是一个 gist的工作示例.代码的内容是:const NSCalendarUnit units = NSEraCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit|NSCalendarCalendarUnit|NSTimeZoneCalendarUnit;NSDateComponents *comps = [calendar components:units fromDate:startDate];if ([comps day] > wantDay) nextMonth(comps); // Missed the first month[comps setDay:wantDay];NSInteger count = 0;while (YES) { NSDate *compareDate = [calendar dateFromComponents:comps]; if (!compareDate) { NSLog(@"Failed to create compare date"); return 5; } NSLog(@"Comparing %@",[formatter stringFromDate:compareDate]); if ([compareDate compare:endDate] == NSOrderedDescending) break; count++; nextMonth(comps);}
nextMonth()的位置是:
static voID nextMonth(NSDateComponents *comps) { NSInteger month = [comps month]; if (month == 12) { [comps setYear:[comps year] + 1]; [comps setMonth:1]; } else { [comps setMonth:month + 1]; }}
示例输出:
$./dateiter 19990112 19990212 122014-01-16 13:06:53.189 dateiter[16740:707] start-date=1999-01-12 00:00:00 +0000,end-date=1999-02-12 00:00:00 +0000,want-day=122014-01-16 13:06:53.189 dateiter[16740:707] Comparing 199901122014-01-16 13:06:53.190 dateiter[16740:707] Comparing 199902122014-01-16 13:06:53.190 dateiter[16740:707] Comparing 199903122014-01-16 13:06:53.190 dateiter[16740:707] 2 months$./dateiter 20111121 20130515 162014-01-16 13:10:53.318 dateiter[16810:707] start-date=2011-11-21 00:00:00 +0000,end-date=2013-05-15 00:00:00 +0000,want-day=162014-01-16 13:10:53.319 dateiter[16810:707] Comparing 201112162014-01-16 13:10:53.319 dateiter[16810:707] Comparing 201201162014-01-16 13:10:53.319 dateiter[16810:707] Comparing 201202162014-01-16 13:10:53.319 dateiter[16810:707] Comparing 201203162014-01-16 13:10:53.320 dateiter[16810:707] Comparing 201204162014-01-16 13:10:53.320 dateiter[16810:707] Comparing 201205162014-01-16 13:10:53.320 dateiter[16810:707] Comparing 201206162014-01-16 13:10:53.320 dateiter[16810:707] Comparing 201207162014-01-16 13:10:53.321 dateiter[16810:707] Comparing 201208162014-01-16 13:10:53.321 dateiter[16810:707] Comparing 201209162014-01-16 13:10:53.321 dateiter[16810:707] Comparing 201210162014-01-16 13:10:53.322 dateiter[16810:707] Comparing 201211162014-01-16 13:10:53.322 dateiter[16810:707] Comparing 201212162014-01-16 13:10:53.322 dateiter[16810:707] Comparing 201301162014-01-16 13:10:53.322 dateiter[16810:707] Comparing 201302162014-01-16 13:10:53.323 dateiter[16810:707] Comparing 201303162014-01-16 13:10:53.323 dateiter[16810:707] Comparing 201304162014-01-16 13:10:53.323 dateiter[16810:707] Comparing 201305162014-01-16 13:10:53.323 dateiter[16810:707] 17 months总结
以上是内存溢出为你收集整理的ios – 两个日期之间特定日期过了多少次?全部内容,希望文章能够帮你解决ios – 两个日期之间特定日期过了多少次?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)