NSDate dateByAddingTimeInterval减去天数错误地更改时间
我缺less一些关于NSDate dateByAddingTimeInterval如何与天工作吗? 这是我的代码从特定的date(AIDate)减去33天。 AIDate的时间值为00:00 PST。
activityOne.ActivityDateTime = [AIDate dateByAddingTimeInterval:-33*24*60*60];
如果AIDate等于4-9-2013 00:00 PST,则上面的代码将减去33天和1小时,这个时间是3-6-2013 23:00 PST。
24 * 60 * 60表示24小时,而不是1天。 当您的计算跨夏令时或夏时制时,这两者之间存在巨大差异。
巧合的是,33天前你的时区没有夏时制。
正确的方法是使用NSDateComponents。 喜欢这个:
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; NSDateComponents *offset = [[NSDateComponents alloc] init]; [offset setDay:-33]; NSDate *offsetedDate = [calendar dateByAddingComponents:offset toDate:[NSDate date] options:0];
你可以用波纹pipe代码
NSDateComponents *dc = [[NSCalendar currentCalendar] components:NSDayCalendarUnit|NSMonthCalendarUnit|NSYearCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit|NSQuarterCalendarUnit fromDate:yourDate]; [dc setDay:dc.day - 33]; NSDate *noticeDate = [[NSCalendar currentCalendar] dateFromComponents:dc];
我希望这对你有帮助…