我通过取月份开始日期(即2015-01-01 00:00:00 +0000)设置特定日期,然后在该基础上添加天数'获得我所需日期的日期。我重复这个过程来建立一个'未来n年的几个月。这里有一些代码(顺便说一下,我正在使用超级有用的NSDate + Escort类别):
self.startDate = [[[self.startDate dateAtStartOfMonth] dateByAddingMonths:1 ] dateAtStartOfDay];
这是我的基础'日期即 - 2015-01-01 00:00:00 +0000
self.startDate = [self.startDate dateByAddingDays:20];
这个添加了20天(在这个例子中),所以我的新约会将是 - 2015-01-21 00:00:00 +0000
完整代码
// get to start of next month.
self.startDate = [[[self.startDate dateAtStartOfMonth] dateByAddingMonths:1 ] dateAtStartOfDay];
// check if month is shorter than start day index (ie february only has 28 days)
// if it is, then set date to end of month, else set day as normal
if ([self.startDateDayIndex integerValue] > [self.startDate daysInMonth]) {
self.startDate = [self.startDate dateAtEndOfMonth];
}
else{
//self.startDate = [self.startDate dateByAddingDays:[self.startDateDayIndex integerValue] - 1];
self.startDate = [self.startDate dateByAddingDays:5];
}
一切正常,直到我到2015年2月,之后我的新约会总是落后1天,所以20日而不是21日。
更奇怪的是,一旦我过了2016年2月,它一切都正常。我现在已经把头发撕了几个小时,试图找出最新情况。这不是明年的闰年,我现在真的很难理解这一年。
有没有人经历过这个并且可以帮助我解决问题?
我已经在一个新项目中做了更多的测试,只需创建一个日期,将其存储在CoreData中,并使用NSCalendar和NSdateComponents逐步增加1个月。我仍然遇到在2015年3月和2015年之间失去一天的同样问题。 2016年3月。
我已经开始了一个新的问题,这个问题更加相关并且剥夺了NSDate + Escort,希望它对其他读者更有帮助。干杯