2016-07-01 10 views
0

Я пробовал с моего конца и просматривал тоже. Возможно, этот вопрос был задан много раз. Я проанализировал погодную реакцию города (например: Мар-дель-Плата) на основе часовой пояс. Я хочу время в HH: mm формат. Ниже приведен пример ответа JSON.Как получить время из строки JSON с помощью Swift?

"Восход": "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, отбросив часовой пояс.

Просьба предложить мне и указать, как действовать с часовым поясом в будущем. Надеюсь, вы, ребята, понимаете, что я до этого. Извините за моего бедного английского.

Спасибо заранее.

+0

Google «Пирамида дум стрижа». Это поможет вам упростить чтение и обслуживание кода. –

ответ

1

Если вы совершенно не заботиться о часовом поясе, вы можете просто обрезать его:

let sunrise = "2016-07-10T08:05:02-0300" 
let sunriseNoTimezone = sunrise.substringToIndex(sunrise.endIndex.advancedBy(-5)) 

let formatter = NSDateFormatter() 
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss" 
formatter.timeZone = NSTimeZone(forSecondsFromGMT: 0) 

let date = formatter.dateFromString(sunriseNoTimezone) 

print(date) 
+0

Большое спасибо, сэр – Lion

0

Попробуйте ввести строку кода. Надеюсь, что это поможет ...

let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZ" 
dateFormatter.timeZone = NSTimeZone.systemTimeZone() 
guard let date = dateFormatter.dateFromString(dateString) 
else { 
assert(false, "no date from string") 
} 
dateFormatter.dateFormat = "HH:mm" 
return dateFormatter.stringFromDate(date) 
+0

Разве это не решает вашу проблему? –

 Смежные вопросы

  • Нет связанных вопросов^_^