【问题标题】:How can I convert including timezone date in swift?如何快速转换包括时区日期?
【发布时间】:2015-08-15 08:20:08
【问题描述】:

我想将2015-08-14T20:02:25-04:00 转换为2015-08-14 16:02
我在下面尝试过,但它不能很好地执行(返回 nil)。

let d = "2015-08-14T20:02:25-04:00"
let formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss ZZZZ"
let date: NSDate? = formatter.dateFromString(d)

如何转换这种日期格式?

【问题讨论】:

  • 我不确定NSDateFormatter 是否有直接的方法,但是您可以分解字符串(即拆分为日期、时间、TZ)并构建一个符合要求的字符串以放入NSDateFormatter .

标签: ios swift nsdateformatter


【解决方案1】:

Xcode 8 • Swift 3

您需要转义“T”并使用适当的时区符号。请注意,这将取决于您的日期字符串是否代表带有 Z "XXXXX" 或没有它 +00:00 "xxxxx" 的 UTC(距 GMT 零秒)时区:

let dateString = "2015-08-14T20:02:25-04:00"
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssXXXXX"
if let date = formatter.date(from: dateString) {
    formatter.dateFormat = "yyyy-MM-dd HH:mm"
    let string = formatter.string(from: date)
    print(string)
}

如果你需要一些参考,你可以使用这个:

【讨论】:

  • @Vakas 随时使用您的代码发布一个新问题以及重现该问题所需的步骤,如果您愿意,我很乐意看看
  • @LeoDabus 让我尝试一下,如果没有解决,将发布一个问题。谢谢。
  • @Vakas 我测试了 +05:00,它给我的时间少了 8 小时,这是我所在位置的正确偏移量 -03:00
  • @LeoDabus 也为我工作,我的日期字符串中还有其他问题。
【解决方案2】:

你可以使用:

formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZ"

希望对您有所帮助!

【讨论】:

  • 你是最棒的!))
猜你喜欢
  • 2016-12-03
  • 2018-08-30
  • 2021-06-12
  • 2018-05-24
  • 1970-01-01
  • 2022-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多