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

时间:2017-09-08 19:26:56

标签: ios swift3 localization nsdate

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

1 个答案:

答案 0 :(得分:8)

最好的方法是不设置dateFormat,而是设置dateStyletimeStyle

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

如果这些样式都不正确,那么请继续使用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