NSDate 给出了错误的答案(Objective-C)
NSDate gave the wrong answer (Objective-C)
我想将秒转换为小时和分钟,我不关心日期。但是下面的代码给了我一个错误的结果。我通过了 "7879"second 并且它应该与 '02:11:19' 相反,但是它 returns 10:11:20 。不知道哪里错了
p.s。我注意到 d 值是 8 小时,所以我认为它与时区有关。但是当我添加代码 formatter.timeZone = [NSTimeZone timeZoneWithName:@"Asia/Shanghai"];
时,它返回了相同的结果。
使用 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)))")
我想将秒转换为小时和分钟,我不关心日期。但是下面的代码给了我一个错误的结果。我通过了 "7879"second 并且它应该与 '02:11:19' 相反,但是它 returns 10:11:20 。不知道哪里错了
formatter.timeZone = [NSTimeZone timeZoneWithName:@"Asia/Shanghai"];
时,它返回了相同的结果。
使用 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)))")