2015年午夜的日期

时间:2014-07-22 18:18:39

标签: objective-c cocoa date nsdate nscalendar

我通过取月份开始日期(即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,希望它对其他读者更有帮助。干杯

0 个答案:

没有答案