【问题标题】:Converting UTC to EST in Swift在 Swift 中将 UTC 转换为 EST
【发布时间】:2017-07-09 17:37:55
【问题描述】:

我的应用程序中有一个文本字符串,用于传达时间和日期,例如let time = "2017-07-09T09:17:08+00:00"。我想获取这个以 UTC 为单位的字符串,并将其转换为以 EST 表示时间的字符串。对于我的示例,生成的字符串将是2017-07-09T05:17:08+00:00。如何做到这一点?

我尝试过使用

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
dateFormatter.timeZone = TimeZone.current
let date = dateFormatter.date(from:time!)!

但是打印日期会给我相同的 UTC 时间。

【问题讨论】:

  • 您总是想要 EST 还是希望用户在他们自己的当地时间看到它?
  • @rmaddy 最好是当地时间。
  • 仅供参考 - 2017-07-09T05:17:08+00:00 不是 EST。那仍然是 UTC,只是 UTC 的较早时间。
  • @rmaddy 你是对的——我的错。

标签: ios swift date timezone nsdateformatter


【解决方案1】:

您需要做的就是使用DateFormatter 将您的Date 对象转换为String。默认情况下,日期将被格式化为当地时间。

// First, get a Date from the String
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
let date = dateFormatter.date(from:time!)!

// Now, get a new string from the Date in the proper format for the user's locale
dateFormatter.dateFormat = nil
dateFormatter.dateStyle = .long // set as desired
dateFormatter.timeStyle = .medium // set as desired
let local = dateFormatter.string(from: date)

请注意,在这种情况下,无需为任一组代码设置任何时区。

【讨论】:

    猜你喜欢
    • 2012-06-06
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 2023-04-07
    • 2021-10-27
    相关资源
    最近更新 更多