मैं अपने यूनिक्स टाइमस्टैम्प (इंट) को अपने ऐप में दिनांक प्रकार में बदलने की कोशिश कर रहा हूं। मुझे एक समाधान मिला जो है

let str = timeValue as? NSNumber
return Date(timeIntervalSince1970: str.doubleValue)

यह समाधान काम करता है लेकिन मैं टाइमज़ोन कैसे सेट कर सकता हूं। मुझे एक और समाधान मिला जो फ़ॉर्मेटर का उपयोग करता था लेकिन फ़ॉर्मेटर रिटर्न स्ट्रिंग।

func convertDateTime(timeValue: Int) -> String {
    let truncatedTime = Int(timeValue)
    let date = Date(timeIntervalSince1970: TimeInterval(truncatedTime))
    let formatter = DateFormatter()
    formatter.timeZone = TimeZone(abbreviation: "GMT+8")
    formatter.dateFormat = "dd/MM/yyyy hh:mm a"

    return formatter.string(from: date)
}

कोई मुझे जवाब दे सकता है कि ऐसा कैसे करें?

संपादित: मैं इसे EKEvent के रूप में सहेजना चाहता हूं।

0
Oxford212 5 नवम्बर 2020, 10:43

1 उत्तर

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

Dates समय में तत्काल/बिंदुओं का प्रतिनिधित्व करते हैं - "संदर्भ बिंदु के बाद से x सेकंड"। वे किसी स्थान पर संदर्भ बिंदु के बाद से "x सेकंड" नहीं हैं, इसलिए समय क्षेत्र उनका हिस्सा नहीं है। इसका कोई मतलब नहीं है "एक Date का समय क्षेत्र निर्धारित करें", उसी तरह यह "Double के दशमलव स्थानों की संख्या निर्धारित करने" का कोई मतलब नहीं है।

ऐसा लगता है कि आप वास्तव में एक EKCalendarEvent स्टोर करना चाहते हैं। ठीक है, EKCalendarEvents करते हैं का एक टाइमज़ोन होता है, क्योंकि वे ईवेंट होते हैं जो किसी विशेष पल/दिन (occurrenceDate), कुछ समय क्षेत्र में (timeZone)। तो आपको बस Date के बजाय EKEvent की timeZone संपत्ति सेट करने की आवश्यकता है।

2
Sweeper 5 नवम्बर 2020, 11:37