Objective c 2015年前一天午夜的日期
我正在设置一个具体日期,方法是取月份开始日期,即2015-01-01 00:00:00+0000,然后在“基准”日期上加上天数,以获得我所需的日期。我重复这个过程是为了在未来的n年里建立一个月的“集合”。这里有一些代码,顺便说一句,我正在使用非常有用的NSDate+护送类别:Objective c 2015年前一天午夜的日期,objective-c,cocoa,date,nsdate,nscalendar,Objective C,Cocoa,Date,Nsdate,Nscalendar,我正在设置一个具体日期,方法是取月份开始日期,即2015-01-01 00:00:00+0000,然后在“基准”日期上加上天数,以获得我所需的日期。我重复这个过程是为了在未来的n年里建立一个月的“集合”。这里有一些代码,顺便说一句,我正在使用非常有用的NSDate+护送类别: self.startDate = [[[self.startDate dateAtStartOfMonth] dateByAddingMonths:1 ] dateAtStartOfDay]; 这是我的“基准”日期,即-
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
self.startDate = [self.startDate dateByAddingDays:20];
完整代码
// 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月之前,一切都很顺利,在这之后,我的新约会总是落后一天,所以是20号而不是21号
更奇怪的是,一旦我过了2016年2月,一切又恢复正常。几个小时来,我一直在绞尽脑汁想弄清楚到底发生了什么事。明年不是闰年,我现在真的很难理解这一年
有没有人经历过这种情况,可以帮我解决这个问题
此后,我在一个新项目中做了更多的测试,只需创建一个日期,将其存储在CoreData中,并使用NSCalendar和NSdateComponents递增地添加1个月。在2015年3月到2016年3月之间,我仍然会遇到同样的问题,即损失一天
我已经开始了一个新的问题,这是更相关的,并剥夺了NSDate+护送,希望它将更有益于其他读者。干杯两个字。闰年。不清楚你想做什么。请给我们一些您正在使用的数字的实际示例。我们中很少有人使用过护送,所以请不要在这方面做文章。另外,不要忘了夏令时。我自己无法复制这一点,即使使用NSDate+护送类别,您能提供一个完整的代码示例吗?