मैं दिन के चरम के लिए सिर्फ उच्च तापमान, दिन का आइकन आदि प्राप्त करने की कोशिश कर रहा हूं, जो दोपहर होगा। मुझे लगता है कि यह डेटफॉर्मेटर के माध्यम से किया जाता है, यहां मेरे पास अब तक है और यह 5 दिन का पूर्वानुमान कोई समस्या नहीं लौटा रहा है, लेकिन यह हर 3 घंटे अपडेट करता है। क्या इस कोड का उपयोग करके इसे अक्षम करने और/या केवल दोपहर 12:00 बजे के लिए कॉल करने का कोई तरीका है?

func getDayOfWeek(today:String)->String? {
    let formatter  = DateFormatter()
    formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
    let todayDate = formatter.date(from: today)
    formatter.dateFormat = "EEEE" // "eeee" -> Friday
    let weekDay = formatter.string(from: todayDate!)

    return weekDay
}

सभी मौसम डेटा:

{
    "cod": "200",
    "message": 0.0054,
    "cnt": 40,
    "list": [{
                "dt": 1525100400,
                "main": {
                    "temp": 12.43,
                    "temp_min": 10.44,
                    "temp_max": 12.43,
                    "pressure": 1015.9,
                    "sea_level": 1035.33,
                    "grnd_level": 1015.9,
                    "humidity": 64,
                    "temp_kf": 1.99
                },
                "weather": [{
                    "id": 800,
                    "main": "Clear",
                    "description": "clear sky",
                    "icon": "01d"
                }],
                "clouds": {
                    "all": 0
                },
                "wind": {
                    "speed": 4.66,
                    "deg": 307.008
                },
                "sys": {
                    "pod": "d"
                },
                "dt_txt": "2018-04-30 15:00:00"
            }
-3
Rich J 30 अप्रैल 2018, 15:37

2 जवाब

सबसे बढ़िया उत्तर

शुरुआती बिंदु के रूप में यह एक बहुत सरल उदाहरण है जो केवल प्रासंगिक डेटा दिखा रहा है।

उदाहरण list सरणी को एक कस्टम संरचना में डिकोड करता है। dt कुंजी को Date में डिकोड किया जाता है। फिर यह वर्तमान समय क्षेत्र में दोपहर के साथ एक DateComponents उदाहरण बनाता है और तिथियों को फ़िल्टर करता है।

struct WeatherData : Decodable {
    let cod : String
    let list : [List]
}

struct List : Decodable {
    let dt : Date
}

let jsonString = """
{ "cod": "200", "message": 0.0054, "cnt": 40, "list": [{ "dt": 1525100400, "main": {"temp": 12.43, "temp_min": 10.44, "temp_max": 12.43, "pressure": 1015.9, "sea_level": 1035.33, grnd_level": 1015.9, "humidity": 64, "temp_kf": 1.99 }, "weather": [{"id": 800, "main": "Clear", "description": "clear sky", "icon": "01d"}],    "clouds": {"all": 0}, "wind": {"speed": 4.66, "deg": 307.008},"sys": {"pod": "d"},"dt_txt": "2018-04-30 15:00:00"}]}
"""

let data = Data(jsonString.utf8)
do {
    let decoder = JSONDecoder()
    decoder.dateDecodingStrategy = .secondsSince1970
    let result = try decoder.decode(WeatherData.self, from: data)
    let utcDifference = TimeZone.current.secondsFromGMT() / 3600
    let noonComponents = DateComponents(hour: 12 + utcDifference, minute: 0, second: 0)
    let noonDates = result.list.filter { Calendar.current.date($0.dt, matchesComponents:noonComponents) }
    print(noonDates)

} catch {
    print("error:", error)
}
0
vadian 30 अप्रैल 2018, 18:53

फ़ील्ड dt और/या फ़ील्ड dt_txt को स्ट्रिंग मानों के रूप में डिकोड करें और यह देखने के लिए कि क्या यह दोपहर का पूर्वानुमान है, सरल स्ट्रिंग तुलना करें।

dt.starts(with: "12")
//or
dt_txt.contains("12:00:00")
0
Joakim Danielson 30 अप्रैल 2018, 18:22