在模拟器和本地设备上获取不同的时间格式 - Swift iOS

Getting different time formats on simulator and local devices - Swift iOS

我正在尝试从 Date() 获取 String 日期,如下所示:

func today() -> String {
    let date = Date()
    let dateFormatter = DateFormatter()
    dateFormatter.dateStyle = .medium

    return dateFormatter.string(from: date)
}

但输出与我在模拟器和本地设备上 运行 时不同:

在本地设备上输出 - “2019 年 11 月 24 日”

在模拟器上 iPhone 8 输出 - "Nov 24, 2019"

*当我使用模板中的日期格式(例如 "MMMMd-yyyy" )时,结果仍然因设备和模拟器而异。

提前致谢。

您得到不同结果的原因是您的 mac(模拟器)和 iPhone 的语言环境不同,并且 DateFormatter 依赖于语言环境将日期转换为字符串。当您不给 DateFormatter 明确的语言环境时,它会使用您的设备,因此如果您需要相同的结果,请设置语言环境。

func today() -> String {
    let date = Date()
    let dateFormatter = DateFormatter()
    dateFormatter.dateStyle = .medium
    dateFormatter.locale = Locale.init(identifier: "en_US")
    return dateFormatter.string(from: date)
}

这是一个有趣的网站,可以检查不同的结果。 https://nsdateformatter.com