【问题标题】:How to identify client's timezone in NodeJS from server side?如何从服务器端识别 NodeJS 中客户端的时区?
【发布时间】:2019-04-07 08:17:09
【问题描述】:

我正在以 UTC 格式保存 mongodb 数据库中的时间。但我想根据他们的时区向客户显示时间。目前时间是根据服务器的时区显示的。我可以将服务器的时区更改为其他值,但它会再次变为静态并且不会根据客户端的时区显示。

我尝试使用 getTimezoneOffset() 但它显示 0 偏移量,并且 MomentJS 猜测函数显示 UTC 时区,即使客户端的时区是亚太地区也是如此。 那么如何在后端使用NodeJS而不是根据服务器位置获取客户端的时区或偏移量?

【问题讨论】:

  • 以UTC格式将时间发送到浏览器...然后让浏览器显示客户想要的任何内容-当然,无需一行代码,您将获得尽可能多的帮助-例如...发送1554625232340 ...然后客户端的new Date(1554625232340)将能够在他们的时区显示
  • 我正在使用模板引擎来呈现页面,因此我必须在日期到达浏览器之前对其进行操作。如果那不可能,那么我正在考虑两种解决方案:1. 使用他们的 IP 地址在会话中存储用户的时区 2. 为前端的每个时间属性分配类,然后使用您建议的解决方案在浏览器中对其进行操作......所以哪个是您的首选方式吗?
  • so I have to manipulate the date before it reaches browser 不,让浏览器操纵日期
  • 好的,谢谢。你让它变得简单多了,在服务器端这会变得非常复杂。

标签: javascript node.js heroku momentjs


【解决方案1】:

您可以使用request-ipgeoip-lite。 requestIp 将为您提供客户端的 ip,当您将该 ip 传递给 geoip 时,它将为您提供包括时区在内的各种信息。然后,您可以使用该时区和时刻将您的 UTC 日期转换为该时区日期。

【讨论】:

    猜你喜欢
    • 2013-02-14
    • 2022-11-02
    • 2013-04-08
    • 2014-09-11
    • 2018-11-04
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多