iOS系统版本 15.4之前版本,无论用户将手机设置成12小时制还是24小时制,代码统一使用24小时制格式处理是没有问题的。
let dateStr = "2024-10-10 02:00"
let dateFormat = DateFormatter()
dateFormat.dateFormat = "yyyy-MM-dd HH:mm"
if let date = dateFormat.date(from: dateStr) {
debugPrint(date)
} else {
debugPrint("nil")
}
上述代码在iOS 15.4之前可以正常运行。但是在iOS 15.4之后,创建date会失败,返回的是nil。
通过12小时制使用”hh“,24小时制使用”HH“,这样分开处理不现实。查阅相关资料后发现为DateFormatter指定具体的locale即可:
let dateStr = "2024-10-10 02:00"
let dateFormat = DateFormatter()
dateFormat.dateFormat = "yyyy-MM-dd HH:mm"
dateFormat.locale = Locale.init(identifier: Locale.current.identifier)
if let date = dateFormat.date(from: dateStr) {
debugPrint(date)
} else {
debugPrint("nil")
}