【问题标题】:getting date and time from a time zone in swift4从swift4中的时区获取日期和时间
【发布时间】:2017-10-28 19:29:11
【问题描述】:

我有一个String 类型的时区,我想在 Swift 4 的这个时区中获取日期(格式为 dd:mm:yyyy)和时间(格式为 hh:mm:ss)。我该怎么做?

我看过日历库,但我不明白如何查看它来解决我的问题。

【问题讨论】:

  • 顺便说一句,虽然 Marcel 向您展示了如何设置 dateFormat 以实现您想要的,但您应该问问自己生成的字符串的目的是什么。例如,如果它是用于与 Web 服务交换或保存在数据库中,您将设置 dateFormat,但还要指定 en_US_POSIXlocale 和 UTC 的 timeZone。但如果是在 UI 中显示,则根本不应该使用dateFormat,而应使用dateStyletimeStyle,因此日期和时间以用户的首选格式显示,而不是您的。例如。所以美国用户看到的是 2017 年 10 月 28 日,而英国用户看到的是 2017 年 10 月 28 日。

标签: swift date time timezone swift4


【解决方案1】:
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd:MM:yyy hh:mm:ss"

let timeZone = TimeZone(identifier: "Europe/Amsterdam")

dateFormatter.timeZone = timeZone

dateFormatter.string(from: Date())

不过,我认为"dd-MM-yyyy HH:mm:ss" 的格式似乎更正确。话说回来;解析自定义日期格式时,应使用设置dateFormat 设置格式。当您格式化显示给用户的日期时,您应该使用用户期望的日期格式(在默认系统区域设置中)。为此,您应该使用dateStyletimeStyle

dateFormatter.dateStyle = .medium
print(dateFormatter.string(from: Date())) // prints "Oct 28, 2017"

dateFormatter.dateStyle = .medium
dateFormatter.timeStyle = .medium
print(dateFormatter.string(from: Date())) // prints "Oct 28, 2017 Oct 28, 2017 at 11:19:13 PM"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-23
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多