【问题标题】:Convert Specific Date String to Swift 3 Date While Adjusting for TimeZone在调整时区时将特定日期字符串转换为 Swift 3 日期
【发布时间】:2016-11-15 03:25:02
【问题描述】:

我知道如何将这种格式的日期字符串 (2016-11-02 05:45:05.000000) 转换为 Swift3 中的日期,但我不明白为什么从 print 命令中吐出的时间与原来的相差这么多? 阅读时可能会将其设置为不同的时区,但如果是这种情况,我该如何将其重置为原始时间?

对于我上面给出的示例时间,它看起来不正确,如下所示。请注意,它已经关闭了好几个小时。

2016-11-02 12:45:05 +0000

下面是我的代码和显示控制台打印命令的图像。

let dateString : String       = task["created"]!.asDictionary!["date"]!.asString!

                let dateFormatter = DateFormatter()
                dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss.SSSSSS"

                let date = dateFormatter.date(from: dateString)

                print(name)
                print("\(id)")
                print(desc)
                print(dateString)
                print(date!)

请参考图片。

【问题讨论】:

  • “使用固定格式的日期表示”developer.apple.com/reference/foundation/nsdateformatter
  • 请让我知道为什么要投反对票,这样我才能解决这个问题,这次我在这个问题上付出了更多的努力。我觉得这是很多用户都会遇到的合理问题。
  • 我没有在您提供的链接中找到要查找的内容,您能否详细说明一下,这很复杂,因为最后是 .000000,我不清楚如何实际使用它。我不知道是微秒还是只有 4 位数是微秒,而其他 00 是别的什么?还有 Alexander Mornchliov 如果你投了反对票,这个问题与另一个问题有很大不同,我删除了那个问题,因为它确实有一个重复的答案。在这种情况下,我没有看到重复项。
  • 我投了反对票,因为 1)这个问题有据可查,2)你没有表现出任何努力。显然这是与时区相关的问题。你试过什么?
  • 我会争辩说,虽然它可能已记录在案,但该文档并没有解决我的问题。假设它是一个时区问题,我该如何解决?这首先是我的全部问题。我不知道在哪里可以找到这些信息。我表现出了很大的努力!大多数人甚至不张贴截图...

标签: ios swift date swift3 nsdate


【解决方案1】:

你需要设置时区:

dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)

【讨论】:

  • 请注意,仅当字符串表示 UTC 时间时才应该这样做。如果字符串代表当地时间,那么这个解决方案是错误的。
猜你喜欢
  • 1970-01-01
  • 2016-03-14
  • 1970-01-01
  • 2020-01-20
  • 2020-01-20
  • 2017-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多