【发布时间】:2016-11-03 12:03:49
【问题描述】:
我从头开始尝试并浏览了。可能这个问题已经被问过很多次了。我根据那里的时区解析了城市(例如:马德普拉塔)的天气响应。我想要 HH:mm 格式的时间。以下是 JSON 响应示例。
“日出”:“2016-07-10T08:05:02-0300”,“日落”:“2016-07-10T17:46:29-0300”
我的代码:
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZ"
dateFormatter.timeZone = NSTimeZone(forSecondsFromGMT: 0)
guard let date = dateFormatter.dateFromString(dateString) else {
assert(false, "no date from string")
}
dateFormatter.dateFormat = "HH:mm"
//dateFormatter.timeZone = NSTimeZone(name: "UTC")
return dateFormatter.stringFromDate(date)
每当我在标签中打印或显示日期字符串时,时间都会发生变化。我想要确切的回复时间。
我的临时解决办法是
// Begin - Its a temperory solution
if dateString.contains("T") {
print("dateString.contains(T)")
let myArray = dateString.componentsSeparatedByString("T")
if myArray.count > 0 {
let str = myArray[1]
if str.contains("+") {
print("(str.contains(+))")
let myArr = str.componentsSeparatedByString("+")
if myArr.count > 0 {
let str1 = myArr[0]
if str1.contains(":") {
print("str1.contains(:)")
let myAr = str1.componentsSeparatedByString(":")
if myAr.count > 0 {
let str2 = myAr[0]
let str3 = myAr[1]
let str4 = "\(str2):\(str3)"
print(str4)
return str4
}
//print(myAr)
}
}
}
if str.contains("-") {
print("(str.contains(-))")
let myArr = str.componentsSeparatedByString("-")
if myArr.count > 0 {
let str1 = myArr[0]
if str1.contains(":") {
print("str1.contains(:)")
let myAr = str1.componentsSeparatedByString(":")
if myAr.count > 0 {
let str2 = myAr[0]
let str3 = myAr[1]
let str4 = "\(str2):\(str3)"
print(str4)
return str4
}
//print(myAr)
}
}
}
}
}
// End - Its a temporary solution
我想要一个更好的解决方案,而不是我的临时解决方案。
编辑1: 正如我所提到的,我希望通过丢弃时区来同时进入 JSON 响应。
请建议我并指导我将来如何处理时区。希望你们明白,我在做什么。对不起我的英语不好。
提前致谢。
【问题讨论】:
-
谷歌“末日金字塔”。它将帮助您使您的代码更易于阅读/维护。
标签: ios json swift2 nsdateformatter nstimezone