Aar*_*ron 5 iphone cocoa-touch objective-c nsdate ios
我错过了一些关于NSDate dateByAddingTimeInterval如何使用几天的内容?这是我从特定日期(AIDate)减去33天的代码.AIDate的时间值为00:00 PST.
activityOne.ActivityDateTime = [AIDate dateByAddingTimeInterval:-33*24*60*60];
Run Code Online (Sandbox Code Playgroud)
如果AIDate等于太平洋标准时间4-9-2013 00:00,则上述代码将减去33天和1小时,其工作时间为太平洋标准时间3-6-2013 23:00.
Mat*_*uch 11
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];
Run Code Online (Sandbox Code Playgroud)
你可以用波纹管代码来做..
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];
Run Code Online (Sandbox Code Playgroud)
我希望这对你有帮助...
| 归档时间: |
|
| 查看次数: |
3980 次 |
| 最近记录: |