NSDate给出了错误的答案(Objective-C)

时间:2017-08-02 06:07:44

标签: ios objective-c nsdate

我希望转移到小时和分钟,我不在乎日期。但是下面的代码给了我错误的结果。我通过" 7879"第二,它应该与#02; 11:19' ,但它返回10:11:20。我不知道哪里出错了。

enter image description here 附:我注意到d值是8小时,所以我认为它关于timeZone ..但是当我添加代码formatter.timeZone = [NSTimeZone timeZoneWithName:@"Asia/Shanghai"];时,它返回了我相同的结果。

1 个答案:

答案 0 :(得分:5)

使用NSDateComponentsFormatter。

NSDateComponentsFormatter *dateComponentsFormatter = [[NSDateComponentsFormatter alloc] init];
dateComponentsFormatter.zeroFormattingBehavior = NSDateComponentsFormatterZeroFormattingBehaviorPad;
dateComponentsFormatter.allowedUnits = (NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond);
NSLog(@"%@", [dateComponentsFormatter stringFromTimeInterval:7879]);

输出:

2:11:19

Swift 3版本

let dateComponentsFormatter = DateComponentsFormatter()
dateComponentsFormatter.zeroFormattingBehavior = .pad
dateComponentsFormatter.allowedUnits = ([.hour, .minute, .second])
print("\(String(describing: dateComponentsFormatter.string(from: 7879)))")