跨时区web系统解决方案

在开发的时候,我们为了时间的准确性,一般会取服务器上面的时间为标准时间。

但是如果系统使用者和我们不在同一个时区,比如服务器的时间是北京时间,而系统使用者的时间是美国时间,这中间差了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"))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值