2

我正在转换格式(hh:mm a)的时间。它适用于所有其他版本,但它给 11.1.1 错误

当我将当前 DateFormatter 更改为时间时,它只给出 hh:mm

let dateFormatter: DateFormatter = DateFormatter()
dateFormatter.dateFormat = "hh:mm a"

// Set date format
// dateFormatter.timeStyle = .short
// Apply date format
let selectedtime: String = dateFormatter.string(from: sender.date)
self.timeTextField.text = selectedtime

//// It gives 02:57 only What is missing although it is working for all other version.

提前致谢 !

4

1 回答 1

8

我在 iOS 11.0.3上遇到了同样的问题。我的时间格式“h:mm a”或“hh:mm a”的工作方式与“hh:mm”完全一样,即显示“21:00”而不是“9:00 PM”或“09:00 PM”。

如何解决这个问题:

  1. 如果“21:00 PM”格式是允许的,您可以在日期格式字符串中将小时标识符“h”大写,“H:mm a”或“HH:mm a”格式将起作用!

  2. 但如果没有,请设置 dateFormatter 的“语言环境”属性。就我而言,它是 dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_GB"];

快速解决方案: dateFormatter.locale = Locale(identifier: "en_GB") 之后我得到了“9:00 pm”字符串而不是错误的“21:00”。

或者

 dateFormatter.locale = NSLocale.system
于 2018-01-24T11:35:53.600 回答