ios – 两个日期之间特定日期过了多少次?

ios – 两个日期之间特定日期过了多少次?,第1张

概述我想要做的是获取两个日期之间每月特定日期的次数. 例如: 我想要在2011年11月21日至2013年5月15日期间每月16日过多少次. 在这种情况下,它将是17. 我一直在努力解决这个问题.我知道如何解决这个问题的唯一方法是编写一堆if语句来检查已经过了多少年,然后已经过了多少个月等等.有没有更快的方法,比如使用NSDate或其他什么? 好的,这是一个 gist的工作示例.代码的内容是: cons 我想要做的是获取两个日期之间每月特定日期的次数.

例如:
我想要在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 – 两个日期之间特定日期过了多少次?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1065809.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存