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

标签 ios objective-c nsdate

我想将秒转移到小时和分钟,并且我不关心日期。但下面的代码给了我一个错误的结果。我第二次通过了“7879”,它应该与 '02:11:19' 相反,但它返回 10:11:20 。我不知道哪里出了问题。

enter image description here 附注我注意到 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)))")

关于ios - NSDate 给出了错误的答案(Objective-C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45452678/

相关文章:

ios - 在 Swift 3.0 中从异步线程调用 UIAlertController

ios - 在界面生成器中创建的按钮...这条虚线是什么以及如何修复它?

ios - 您可以在 Xcode 中引用 Xamarin 的输出 (lib) 吗?

ios - 当应用程序进入后台时 AVAudioPlayer 不播放

ios - 检查 isDaylightSavingTime

ios - 更改事件时区是否会影响共享事件中的其他人?

ios - Appium 医生显示错误

objective-c - IOS5中的UITabbarcontroller抛出UIViewControllerHierarchyInconsistency异常

objective-c - 将核心数据存储从 iCloud 迁移到本地

ios - 通过 NSDate 对象属性快速过滤