【问题标题】:Server UTC time and date.js getTimezoneOffset different服务器UTC时间和date.js getTimezoneOffset不同
【发布时间】:2018-12-24 08:38:18
【问题描述】:

我的代码托管在本地和服务器上,自 Epoch 在我的服务器上出现意外行为以来的毫秒数。

我有 new Date("07/16/2018 10:17:48").getTime() 硬编码,在我的本地,结果是 1531761468000,服务器:1531736268000。服务器落后 7 小时。

我跑了date +%z,本地:-0700,服务器:-0700

我运行date.getTimezoneOffset(),本地:420(转换为 UTC-7),服务器:0(转换为 UTC)

造成这种差异的原因可能是什么?我不知道如何解决它。

【问题讨论】:

  • 07/16/2018 10:17:48 是哪个时区?当地的?服务器?霍洛鲁鲁?乌干达?
  • 这是一个非标准字符串,因此解析取决于实现。很可能它被解析为本地,7 小时代表您的服务器和客户端之间的系统时区差异。

标签: javascript date datetime timezone datejs


【解决方案1】:

我假设您在服务器上运行 Node.js。请比较服务器和本地的 process.env。

console.log(process.env);

考虑 process.env.TZ!您的节点进程不会使用 date(1) 调用,而是尊重环境。如果这确实是原因,您可以通过调整实际环境(通过主管或用于启动进程的任何东西)或在脚本内启动后立即更改它来修复它。

这篇文章通过向您展示一些您必须控制服务器进程环境的选项应该会有所帮助:https://medium.freecodecamp.org/heres-how-you-can-actually-use-node-environment-variables-8fdf98f53a0a

【讨论】:

  • 哦,谢谢!我的服务器 process.env 未定义。我不是太有经验;这正常吗?
  • 这可能是正常的。您有很多选项可以为您的节点进程设置环境。我编辑了我的原始答案,为您提供有用的指南。
猜你喜欢
  • 1970-01-01
  • 2015-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多