在ExpressJS中获取客户端的时区偏移量
我正在寻找一种方法来获取ExpressJS中的客户端时区偏移量(例如,req对象将非常棒)。
谢谢你
如果你控制客户端,你可以用客户端JavaScript来完成 。
如果你不这样做(例如,你正在构build一个像API这样的服务器端组件),那么你就不能从HTTP请求中取出它(除非你正在使用会话,但即使这样也不一定可靠)。
另一方面,如果只是服务器端的话,你不应该担心它:设置所有的date对象为UTC或者Unix时间戳,留给客户端开发者来处理时区。
有些人喜欢用图书馆的时间来处理时间,但是我相信Javascript中的Date对象足以满足你所要求的,而且不需要库。 getTimezoneOffset是你将需要的。 我希望这有帮助! 让我知道如果你有其他问题!
即使你有时区偏移,并不意味着你有正确的时间在客户端,考虑到一些地区有“夏令时”。
但是,考虑到以下数据,您可以“猜测”用户所在的时区:
- req.get('Accept-Language'),用户现在可以居住在哪个国家;
- req.ip,在数据库中search并找出大概的位置;
- 客户端(新date).getTimezoneOffset(),为时区偏移;
最后,通过计算上述结果,你的猜测应该差不多了。 时区应该像“America / New_York”那样存储在string中,而不是时区偏移号码。
http://momentjs.com/timezone/应该是处理时区的好工具。
在保存“几乎正确”的时区后,不要忘记留下一个用户可以更改的地方。