我失去了一些有关的NSDate dateByAddingTimeInterval如何与天? 这是我从一个特定日期(AIDate)减去33天代码。 AIDate具有00:00 PST的时间值。
activityOne.ActivityDateTime = [AIDate dateByAddingTimeInterval:-33*24*60*60];
如果AIDate等于2013年4月9日0点PST,上面的代码将减去33天和1小时该工程以2013年3月6日23点PST。
我失去了一些有关的NSDate dateByAddingTimeInterval如何与天? 这是我从一个特定日期(AIDate)减去33天代码。 AIDate具有00:00 PST的时间值。
activityOne.ActivityDateTime = [AIDate dateByAddingTimeInterval:-33*24*60*60];
如果AIDate等于2013年4月9日0点PST,上面的代码将减去33天和1小时该工程以2013年3月6日23点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];
你可以用波纹管代码做到这一点..
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];
我希望这对你有帮助...