簡體   English   中英

如何在Swift中格式化與Json類似的日期?

[英]How to format date in Swift that similarly matches Json?

我在生成與json輸出匹配的Date對象時遇到問題。 http://chartapi.finance.yahoo.com/instrument/1.0/aapl/chartdata;type=quote;range=1y/json中 -日期采用以下格式“日期”:20151013。為了獲得2015- 10-13,首先,我在API調用和JSON解析中使用Alamofire和SwiftJSON。 這是我的代碼中的一些相關行:

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。 我該如何解決? 這與用戶的區域設置或時區有關嗎?

看一下這個

斯威夫特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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM