NSCalendar 获取现在和年底之间的日期差异给出零月份
Posted
技术标签:
【中文标题】NSCalendar 获取现在和年底之间的日期差异给出零月份【英文标题】:NSCalendar to get date difference between now and end of year gives a zero month 【发布时间】:2012-11-05 12:37:47 【问题描述】:当我尝试获取从现在到年底的日期差异时,我得到的月份为 0。我正在使用NSCalendar
对象来获取两个NSDate
对象之间的差异。
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setYear:2013];
[comps setMonth:0];
[comps setDay:0];
[comps setHour:0];
[comps setMinute:0];
[comps setSecond:0];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *newDate = [calendar dateFromComponents:comps];
NSDateComponents *timeDifference = [[NSCalendar currentCalendar]
components: NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit |
NSMinuteCalendarUnit | NSSecondCalendarUnit
fromDate:[NSDate date] toDate:newDate options:0];
int months = timeDifference.month;
int days = timeDifference.day;
if (months>0)
days+=31;
int hours = timeDifference.hour;
int minutes = timeDifference.minute;
int seconds = timeDifference.second;
【问题讨论】:
【参考方案1】:您正在尝试计算到 2013 年的月数、天数等。在 NSDateComponents
中,0 表示“无值”,所有计数的值都应大于 0。这就是考虑您的 comps
值的原因作为“不完整”,这会导致来自NSCalendar
的奇怪输出。
将第 3-4 行中的 month
和 day
设置为 1 可解决此问题。
【讨论】:
以上是关于NSCalendar 获取现在和年底之间的日期差异给出零月份的主要内容,如果未能解决你的问题,请参考以下文章