[英]Get data from json time and format time in swift
我在網站的json中列出了數據時間的數組,因此我需要將時間從24小時制轉換為12小時,並使用時間與當前時間進行比較
這是我的代碼:
let task=URLSession.shared.dataTask(with: url!) {(data, response, err) in
if err != nil{
print("err")
}else{
do{
let dataT=try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as? NSDictionary
if let prayTime = dataT?["times"] as? NSArray {
if let fajerTT = prayTime[0] as? String {
let timeFormat = DateFormatter()
timeFormat.dateFormat = "hh:mm"
let timeFajer=timeFormat.date(from: fajerTT)
print(fajerTT)
print("\(timeFajer))")
self.fajerT.text=timeFajer
}else {print("false")}
}
}catch{print("Error")
}
}
}
task.resume()
這來自json
["05:05","06:30","12:56","16:30","19:21","19:21","20:51"]}
如果您想將接收到的數組中的時間與當前時間進行比較,則無需將日期轉換為12小時格式。
獲取日期組件並將其與當前日期進行比較。
基本上,您的日期格式是錯誤的。 由於時間采用24小時制,因此為HH:mm
。
例
let timeFormatter = DateFormatter()
timeFormatter.dateFormat = "HH:mm"
let outputFormatter = DateFormatter()
outputFormatter.dateFormat = "hh:mm a"
let calendar = Calendar.current
let now = Date()
let times = ["05:05","06:30","12:56","16:30","19:21","19:21","20:51"]
for time in times {
let date = timeFormatter.date(from: time)!
let components = calendar.dateComponents([.hour, .minute], from: date)
let match = calendar.date(now, matchesComponents: components)
print(match)
let output = outputFormatter.string(from: date)
print(output)
}
而且-與往常一樣-不要在Swift中使用Foundation集合類型( NSArray
/ NSDictionary
),使用本機類型並且永遠不要傳遞選項.mutableContainers
if let dataT = try JSONSerialization.jsonObject(with: data!) as? [String:Any],
let prayTime = dataT["times"] as? [[String:Any]] {
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.