MomentJS时区问题:VPS服务端运行时时间以哪方位置时区为准
MomentJS 时区归属判断规则
这个问题的核心取决于你的MomentJS代码实际运行的环境,和服务器部署位置没有绝对关系:
- 如果MomentJS运行在服务端Node.js环境(也就是代码放在VPS上直接执行,生成时间后再返回给前端):
此时默认采用的是VPS系统的时区设置,也就是你例子中A国的时区。无论哪个国家的用户访问,服务端生成的时间都统一按A国时区计算,和客户端位置无关。
示例代码:服务端直接调用moment()返回的时间,默认匹配VPS系统时区。 - 如果MomentJS运行在客户端浏览器环境(也就是代码打包后作为静态资源放在VPS上,用户访问时下载到本地浏览器执行):
此时默认采用的是用户本地设备的时区设置,也就是你例子中B国用户的本地时区。此时即使VPS部署在A国,生成时间也不会受服务端时区影响,完全跟随用户设备的时区配置。
如果需要跨环境统一时区,可以引入moment-timezone扩展,手动指定固定时区计算,比如moment.tz("America/New_York")就会固定使用纽约时区生成时间,不受运行环境的默认时区干扰。
内容的提问来源于stack exchange,提问作者Dinesh Udayan
相关产品推荐
相关产品推荐

