我正在从服务器获取日期:2022-12-14 20:59:59 +0000我有优惠代码视图,所以根据收到的日期,我应该显示多少秒后,它将过期。
例如,如果我的当前日期是2022-12-14 19:59:59 +0000,我必须显示60:00秒。如果用户的时区是GMT+4,他也必须看到60:00秒。
所以我用这个代码:
let currentTime = Int(Date().timeIntervalSince1970)
let expirationDate = model.expirationDate
expiredText = expirationDate.dateStringWithFormat("dd.MM.yyyy")
timeLeft = Int(expirationDate.timeIntervalSince1970) - currentTime
**结果为:**当前时间:2022年12月14日13:48:16 +0000 //我的当前时间是16:48:16
失效日期:2022年12月14日20时59分59秒+0000秒
剩余时间:“0 d. 07:11:43”
因此Date()返回错误的日期。
我试着用日历,但结果是一样的。
let calendar = Calendar(identifier: .gregorian)
let currentDate = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss:Z"
dateFormatter.timeZone = calendar.timeZone
我如何正确地将我的时区转换为接收日期的时区,反之亦然?谢谢
1条答案
按热度按时间w7t8yxp51#
我觉得你把事情弄得更复杂了。
我们有服务器时间戳
我们使用格式化程序将其转换为
Date
型
然后,我们要计算服务器数据与当前数据之间的差异
然后我们可以使用
DateComponentsFormatter
来得到字符串形式的差值