如何格式化 Swift 中与 Json 相似的日期?

How to format date in Swift that similarly matches Json?

我无法生成与 json 输出匹配的日期对象。在 http://chartapi.finance.yahoo.com/instrument/1.0/aapl/chartdata;type=quote;range=1y/json - 日期采用以下格式 "Date":20151013。为了获得 2015-10-13,首先我在我的 [中使用 Alamofire & SwiftJSON =20=] 调用和 JSON 解析。以下是我的代码中的一些相关行:

let dateInteger = subJson["Date"].int
if dateInteger != nil {
  let editedDateInt = dateInteger!
  let dateString = NSMutableString(string: "\(editedDateInt)")
  dateString.insert("-", at: 4)
  dateString.insert("-", at: 7)
chartpoint.date = Formatters.sharedInstance.dateFromString(key: dateString as String) }

// date extension
public class Formatters {
    public static let sharedInstance = Formatters()
private let dateKeyFormatter = DateFormatter()
init() { dateKeyFormatter.dateFormat = "yyyy-MM-dd" }

public func dateFromString(key: String?) -> Date? {
  guard let key = key else { return nil }
  return dateKeyFormatter.date(from: key) }

问题是输出出现了 Optional(2015-10-12 16:00:00 +0000)。不太像我预期的 2015-10-13。我该如何解决?这与用户的区域设置或时区有关吗?

看看这个

Swift 3.0

let dateFromServer = "20151013"    
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyyMMdd"
dateFormatter.timeZone = TimeZone(abbreviation: "GMT")
let date = dateFormatter.date(from: dateFromServer)
dateFormatter.dateFormat = "yyyy-MM-dd"
let finalDate = dateFormatter.string(from: date!)
print(finalDate)

输出:

2015-10-13

根据 @rmaddy 的建议,将格式样式从 YYYY 更改为 yyyy