根据设备区域设置格式化日期字符串

Format date string as per device locale settings

我必须根据设备区域设置格式化日期字符串(UTC 格式)。例如在印度应显示为 08/09/2017 12.23,在美国应显示为 09/08/2017 12.23,根据不同的区域设置应相应显示日期格式。

最好的方法是不设置 dateFormat,而是设置 dateStyle and timeStyle

let formatter = DateFormatter()
formatter.timeZone = TimeZone(secondsFromGMT: 0)
formatter.dateStyle = .medium
formatter.timeStyle = .medium
let string = formatter.string(from: Date())

如果这些样式中的 none 非常正确,那么,继续使用 dateFormat,而不是字符串文字,使用 setLocalizedDateFormatFromTemplate(_:) 设置 dateFormat

let formatter = DateFormatter()
formatter.timeZone = TimeZone(secondsFromGMT: 0)
formatter.setLocalizedDateFormatFromTemplate("ddMMyyyy HH:mm")
let string = formatter.string(from: Date())

美国用户显示 09/08/2017 19:42,英国用户显示 08/09/2017 19:42,德国用户显示 08.09.2017 19:42