मुझे जेसन प्रतिक्रिया से शुरुआती घंटे मिल रहे हैं और मैं गणना करना चाहता हूं कि इस समय स्टोर खुला है या नहीं?

मेरी जेसन प्रतिक्रिया इस तरह दिखती है:

{
"endDay":2,
"endTime":"03:00",
"startDay":1,
"startTime":"11:00"
},
{
"endDay":3,
"endTime":"03:00",
"startDay":2,
"startTime":"11:00"
},
...

इस जेसन प्रतिक्रिया में मेरे पास 7 शब्दकोश (रविवार से सोमवार) हैं, जहां startDay और endDay कार्यदिवस का प्रतिनिधित्व कर रहे हैं। (रविवार = 0, और इसी तरह।)

यूटीसी में सभी समय से ऊपर, लेकिन मैं अपने स्थानीय समय क्षेत्र में गणना करना चाहता हूं।

वास्तविक समस्या 'दिन' रूपांतरण में अंतर का पता लगाना है। मैं केवल समय को रूपांतरित कर सकता हूं, लेकिन यह नहीं पता कि अगले दिन या पिछले दिन की गणना में समय क्षेत्र के अंतर को कैसे प्रबंधित किया जाए?

मैं एक्सकोड 12 और स्विफ्ट 5 का उपयोग कर रहा हूं। अग्रिम में आपकी सहायता की सराहना करें। धन्यवाद।

0
BARS 13 जिंदा 2021, 08:41

1 उत्तर

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

जीएमटी में पीएसटी समय क्षेत्र में कार्यदिवस और समय का रूपांतरण यहां दिया गया है:

let weekday = 2 // weekday == 1 is Sunday
let hour = 4 // 4:00 am in GMT+0
let minute = 0 // in GMT+0
guard let timeZone = TimeZone(secondsFromGMT: 0) else { return }
var calendar = Calendar(identifier: .gregorian) // Should be the calendar that is used by your server
calendar.timeZone = timeZone
let date = Date()
let dateComponents = calendar.dateComponents(Set(arrayLiteral: Calendar.Component.weekday,
                                                 Calendar.Component.hour,
                                                 Calendar.Component.minute), from: date)
var dateComponentsDiff = DateComponents()
dateComponentsDiff.day = weekday - dateComponents.weekday!
dateComponentsDiff.hour = hour - dateComponents.hour!
dateComponentsDiff.minute = minute - dateComponents.minute!
guard let arbitraryDate = calendar.date(byAdding: dateComponentsDiff, to: date),
      let pstTimeZone = TimeZone(abbreviation: "PST") else { return }
let pstDateComponents = calendar.dateComponents(in: pstTimeZone, from: arbitraryDate)
print("WEEK DAY: \(pstDateComponents.weekday!)\nTIME: \(pstDateComponents.hour!):\(pstDateComponents.minute!)")

आउटपुट:

WEEK DAY: 1
TIME: 20:0
1
Eugene Dudnyk 13 जिंदा 2021, 14:36
धन्यवाद @ यूजीन। यह वही नहीं है जो मैं चाहता हूं, लेकिन इससे मुझे मेरी समस्या का समाधान करने में मदद मिली।
 – 
BARS
13 जिंदा 2021, 22:52