如果系统是 24 小时格式,Swift 如何获得 12 小时格式

Wil*_* Hu 5 ios swift

我的 iPhone 设备系统设置为 24 小时格式,我想获得 12 小时格式,即: 23:27 get 11:27 PM

我试过:

            let today = NSDate()
            let dateFormatter = DateFormatter()
            dateFormatter.dateFormat = "hh:mm a"
            let string = dateFormatter.string(from: today as Date) // 23:27
Run Code Online (Sandbox Code Playgroud)

得到23:27字符串。

我发现了这个:How to get 12 hours format time string when system set to use 24 hours format

            let today = NSDate()
            let dateFormatter = DateFormatter()
            let dateFormat = DateFormatter.dateFormat(fromTemplate:"hh:mm a", options: 0, locale: NSLocale.current)
            dateFormatter.dateFormat = dateFormat
            let string = dateFormatter.string(from: today as Date) //23:27 i want 11:27 pm
Run Code Online (Sandbox Code Playgroud)

但它不起作用我仍然得到23:27字符串而不是11:27pm字符串。

谢谢!

编辑:根据shallowThought's answer 不确定是否Locale是这种情况?

在此处输入图片说明

EDIT2 添加这个:

dateFormatter1.locale = Locale(identifier: "en_US_POSIX")
Run Code Online (Sandbox Code Playgroud)

作品。我当前的语言环境是en_CN.

sha*_*ght 4

您的代码在 iPhone6、iOS 10.1.1 上运行良好,日期设置为 24 小时:

override func viewDidLoad() {
    super.viewDidLoad()

    let today = NSDate()
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "hh:mm a"
    let string = dateFormatter.string(from: today as Date)
    print(string)
}
Run Code Online (Sandbox Code Playgroud)

印刷:

04:38 PM
Run Code Online (Sandbox Code Playgroud)

  • 它不适合我 (3认同)