背景:我们开发的应用有可能会在国外使用,有一些业务又和时间有关,如果我们从手机上获取的时间不做处理直接使用就会有问题。
现象:北京时间2023年7月10号20:00开启秒杀活动,用户在美国达拉斯打开活动页面显示活动还没开始。
排查:应用服务器在北京,从服务器的日志中看达拉斯的用户请求时间竟然是上午7:00,相差了13个小时,那我们如何处理呢?
方案:
1、我们在请求时带上时区参数,在服务器校正时间。
2、客户端将达拉斯时间转成北京时间。
这个转换过程虽然是将达拉斯的用户手机时间加13个小时,但iOS时区转换和时间格式化很类似,代码如下:
static func dateToDetailString() ->String { let date = Date() let formatter = DateFormatter() formatter.dateFormat = "yyyy-MM-dd HH:mm:ss" //转成北京时区下的日期 let beijingZone = NSTimeZone(abbreviation:"GMT+0800") formatter.timeZone = beijingZone as TimeZone? let dateString = formatter.string(from: date) return dateString }
标签:转换,iOS,let,达拉斯,时间,时区,formatter From: https://www.cnblogs.com/adongdev/p/17542344.html