如何在node.js中设置默认时区?


当前回答

你可以通过将环境变量TZ设置为UTC来强制Node.js进程时区

因此,所有时间都将以UTC+00:00计算

完整名单:https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

示例package.json:

{
  "scripts": {
    "start": "TZ='UTC' node index.js"
  }
}

其他回答

这个作品; https://stackoverflow.com/a/53282481/17700714

var date = new Date('2016-08-25T00:00:00')
var userTimezoneOffset = date.getTimezoneOffset() * 60000;
new Date(date.getTime() - userTimezoneOffset);

设置服务器时区并使用NTP同步。 下面是更改服务器时间的一个更好的解决方案。

列出时区

timedatectl list-timezones

设置时区

sudo timedatectl set-timezone America/New_York

确认时区

timedatectl

我的服务器和数据库更喜欢使用UTC时区。任何转换都必须在客户端处理。 我们可以在客户端使用moment.js。

维护多个实例也很容易,

另一种至少在Linux环境下对我有用的方法是像这样运行你的Node.js应用程序:

env TZ='Europe/Amsterdam' node server.js

这至少可以确保从一开始就正确地设置了时区。

const nDate =新日期()。toLocaleString(“en - us”{ 时区:“亚洲/首尔” }); console.log (nDate);

对于那些将Node.js应用程序部署到Amazon AWS Elastic Beanstalk的人,这里有一个答案。我还没有在其他地方看到过这样的记录:

在Configuration -> Software -> Environment Properties下,简单地设置键值对TZ和您的时区,例如America/Los Angeles,然后应用更改。

你可以通过在Node应用程序中输出new Date(). tostring()来验证效果,并注意时区后缀。