在NodeJS localhost中设置时区以反映生产环境

时间:2018-01-07 01:49:41

标签: node.js express timezone

我正在尝试使用项目中的日期。基于5小时的日期(我居住在东部时间,-5),我不断得到奇怪的小变化。

生产环境默认为UTC,我希望能够在我的localhost环境中执行此操作。

我是否可以使用express或某些npm程序包在UTC中启动服务器?这是机器问题吗?

我不希望代码与生产环境不同。

5 个答案:

答案 0 :(得分:4)

另一个答案是设置env变量。

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

答案积分转到https://stackoverflow.com/a/35432069/1281089

答案 1 :(得分:2)

我也会建议使用Moment.js,但如果您查看更全球化的内容,则有2条提示:

  1. 比较prod和本地env之间的节点版本:

https://github.com/nodejs/node-v0.x-archive/issues/3044

=>您可能会有一些版本差异,以解释不同的行为

  1. 在您的本地环境中强制使用UTC:

    export TZ = UTC(在Linux上)

    $ env:TC ='UTC'(在Windows上)

=>来源:Can I make node.js Date always be in UTC/GMT?

答案 2 :(得分:0)

最简单的方法是在Docker容器中运行代码。您可以将容器的时间设置为UTC。

基于NodeJS的应用程序的Docker化非常简单。

示例Docker文件。

FROM node:carbon

# Create app directory
WORKDIR /usr/src/app

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./

RUN npm install
# If you are building your code for production
# RUN npm install --only=production

# Bundle app source
COPY . .

EXPOSE 8080
CMD [ "npm", "start" ]

大多数情况下,您甚至不需要手动将时间设置为UTC。默认时间为docker容器中的UTC。

Internet上有关于如何将nodeJS应用程序部署到docker的教程。一个好的是https://nodejs.org/en/docs/guides/nodejs-docker-webapp/

答案 3 :(得分:0)

我强烈建议您查看Moment.js以了解JS中的日期和时间。

您应该按照以下方式处理代码中的日期和时间。

moment.utc(myDate).format();

See docs here.

您的代码将使用UTC中的日期和时间,无论其在何处运行。这样,您的代码将在本地显示与生产中相同的日期和时间。

希望这有帮助。

答案 4 :(得分:0)

STEP 1:将Windows操作系统时间更改为UTCUnited Kingdom Region(用于军事时间)。

STEP 2:在Chrome开发工具中,将传感器设置为所需的时区。就我而言,它是EDT/EST

注释:

要实现浏览器时区更改,请确保已打开开发工具。另外,您可能必须在新标签上来回切换传感器才能使其再次工作。

这里是希望NodeJS的Windows能解决问题。