2016-10-12 4 views
0

json 출력과 일치하는 Date 객체를 생성하는 데 문제가 있습니다. http://chartapi.finance.yahoo.com/instrument/1.0/aapl/chartdata;type=quote;range=1y/json에서 날짜는 "Date"형식으로되어 있습니다 : 20151013. 2015-10-13을 얻으려면 먼저 API 호출 및 JSON 구문 분석에 Alamofire & SwiftJSON을 사용합니다. 여기에 내 코드에서 몇 가지 관련 라인은 다음과 같습니다Json과 비슷한 Swift에서 날짜의 서식을 지정하는 방법은 무엇입니까?

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은 아닙니다. 이 문제를 어떻게 해결할 수 있습니까? 이것은 사용자의 로켈 또는 시간대와 관련이 있습니까?

+0

코드는 문제가 없습니다. 왜 당신은 문제가 있다고 생각합니까? '2015-10-13' 문자열을'Date?'인스턴스로 구문 분석했습니다. 그런 다음 'Date?'를 인쇄하면 같은 날짜가 표시됩니다. – rmaddy

+0

@EricAya 나는 당신이 제안한 변경을했다. 여전히 같은 출력. 2015-10-12 16:00:00 +0000 ... 몇 시간 전까지. – ckraider

+0

@rmaddy 출력이 정확하지 않습니다. 2015-10-12 16:00:00 +0000. 촛대 차트를 만들기 위해 정확하고 yyyy-MM-dd 형식으로 만들려고합니다. – ckraider

답변

1

확인이 밖으로

스위프트 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.

+1

이것은 잘못되었습니다. 'YYYY'는 사용하지 말고 그 해에는'yyyy'를 사용하십시오. 시간대를 UTC로 설정하는 이유를 고의로 이해하지 않는 한 시간대를 설정하지 마십시오. – rmaddy

+0

@rmaddy 당신이 제안한대로 업데이 트하겠습니다. 그러나 차이점을 알려 줄 수 있습니까 –

+0

아니요, 'YYYY'와 'yyyy'는 일년 내내 같은 가치를 부여하지 않습니다. 그들은 많은 날짜에 대해 동일하지만 전부는 아닙니다. – rmaddy

관련 문제