在开发的时候,我们为了时间的准确性,一般会取服务器上面的时间为标准时间。
但是如果系统使用者和我们不在同一个时区,比如服务器的时间是北京时间,而系统使用者的时间是美国时间,这中间差了12小时。
那么如何让服务器取记录系统使用者的本地时间呢?
有人会说直接去使用者设备上的本地时间就好,但是这样会有问题,如果设备时间不准确,那么记录的时间也不准确所以不行。
解决方案有多种,比如给使用者加上时区标识,我们讨论一种更简单暴力的解决办法。
前端获得时区信息,服务器由世界标准时间+前端传来的时区信息 计算使用者本地时间
前端获得时区信息:
var time_area = new Date().getTimezoneOffset() / 60;
console.log(time_area )
如果是北京时间则 time_area 为 -8
如果是美国时间则time_area 为 8
服务器计算当时时间(python),time_area 是前端传来的
from datetime import datetime,timedelta,timezone
utc_time = datetime.utcnow().replace(tzinfo=timezone.utc)
offset = (0-time_area)
local_time = utc_time.astimezone(timezone(timedelta(hours=offset)))
print(datetime.strftime(local_time, "%Y-%m-%d %H:%M:%S"))