在ExpressJS中获取客户端的时区偏移量

我正在寻找一种方法来获取ExpressJS中的客户端时区偏移量(例如,req对象将非常棒)。

谢谢你

如果你控制客户端,你可以用客户端JavaScript来完成 。

如果你不这样做(例如,你正在构build一个像API这样的服务器端组件),那么你就不能从HTTP请求中取出它(除非你正在使用会话,但即使这样也不一定可靠)。

另一方面,如果只是服务器端的话,你不应该担心它:设置所有的date对象为UTC或者Unix时间戳,留给客户端开发者来处理时区。

有些人喜欢用图书馆的时间来处理时间,但是我相信Javascript中的Date对象足以满足你所要求的,而且不需要库。 getTimezoneOffset是你将需要的。 我希望这有帮助! 让我知道如果你有其他问题!

即使你有时区偏移,并不意味着你有正确的时间在客户端,考虑到一些地区有“夏令时”。

但是,考虑到以下数据,您可以“猜测”用户所在的时区:

  1. req.get('Accept-Language'),用户现在可以居住在哪个国家;
  2. req.ip,在数据库中search并找出大概的位置;
  3. 客户端(新date).getTimezoneOffset(),为时区偏移;

最后,通过计算上述结果,你的猜测应该差不多了。 时区应该像“America / New_York”那样存储在string中,而不是时区偏移号码。

http://momentjs.com/timezone/应该是处理时区的好工具。

在保存“几乎正确”的时区后,不要忘记留下一个用户可以更改的地方。