【问题标题】:Date from string timezone not tally using DateFormatter来自字符串时区的日期不使用 DateFormatter
【发布时间】:2018-01-16 23:58:17
【问题描述】:

代码:

let isoDate = "1981-02-20T10:44:00+0800"
let dateFormatter = DateFormatter()
dateFormatter.timeZone = TimeZone.current
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"

var localTimeZoneAbbreviation: String { return TimeZone.current.abbreviation() ?? "" }

let date = dateFormatter.date(from: isoDate)!
dateFormatter.string(from: date)

输出:

为什么日期输出时区是 +07:30 而不是日期字符串和 TimeZone.current 中定义的 +0800?谁能解释一下?

【问题讨论】:

  • 注意TimeZone.current是默认值...

标签: ios swift timezone dateformatter


【解决方案1】:

时区格式不是Z而是ZZZ

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

【讨论】:

  • 也没有将时区固定为 +0800
  • 我只是编辑我的答案。时区格式是 3 Z 而不是 4。
  • 将 Z 格式更改为各种组合。仍然是相同的输出 GMT+0730
  • 我只是再检查一次,我认为它有效,但打印方法返回结果为 +0000,但时间是 02:44 而不是 10:44,所以它增加了 8 小时。如果您在代码中操作相同的对象。一切都应该正常。
猜你喜欢
  • 2021-02-04
  • 1970-01-01
  • 1970-01-01
  • 2019-03-13
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多