首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从给定的日期-时间响应中获取本地时区的商店营业时间?- SWIFT 5

如何从给定的日期-时间响应中获取本地时区的商店营业时间?- SWIFT 5
EN

Stack Overflow用户
提问于 2021-01-13 05:41:41
回答 1查看 187关注 0票数 0

我从Json的回复中得到了营业时间,我想计算一下商店现在是否营业?

我的Json回答如下:

代码语言:javascript
复制
{
"endDay":2,
"endTime":"03:00",
"startDay":1,
"startTime":"11:00"
},
{
"endDay":3,
"endTime":"03:00",
"startDay":2,
"startTime":"11:00"
},
...

我在Json的回复中有7本字典(星期日到星期一),startDayendDay代表工作日。(星期日= 0,以此类推)

上面所有的时间都在UTC,但我想在我的本地时区计算。

的实际问题是找出“日”转换的不同之处。我可以转换时间,但不知道如何管理计算第二天或前一天的时区差异?

我正在使用XCode 12和Swift 5。感谢您的帮助。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-13 11:36:39

以下是格林尼治标准时间的工作日和时间转换为PST时区:

代码语言:javascript
复制
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!)")

输出:

代码语言:javascript
复制
WEEK DAY: 1
TIME: 20:0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65696255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档