我正在尝试使用项目中的日期。基于5小时的日期(我居住在东部时间,-5),我不断得到奇怪的小变化。
生产环境默认为UTC,我希望能够在我的localhost环境中执行此操作。
我是否可以使用express
或某些npm
程序包在UTC中启动服务器?这是机器问题吗?
我不希望代码与生产环境不同。
答案 0 :(得分:4)
另一个答案是设置env变量。
env TZ='Europe/Amsterdam' node server.js
答案 1 :(得分:2)
我也会建议使用Moment.js,但如果您查看更全球化的内容,则有2条提示:
https://github.com/nodejs/node-v0.x-archive/issues/3044
=>您可能会有一些版本差异,以解释不同的行为
在您的本地环境中强制使用UTC:
export TZ = UTC(在Linux上)
$ env:TC ='UTC'(在Windows上)
答案 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();
您的代码将使用UTC中的日期和时间,无论其在何处运行。这样,您的代码将在本地显示与生产中相同的日期和时间。
希望这有帮助。
答案 4 :(得分:0)
STEP 1:
将Windows操作系统时间更改为UTC
和United Kingdom Region
(用于军事时间)。
STEP 2:
在Chrome开发工具中,将传感器设置为所需的时区。就我而言,它是EDT/EST
注释:
要实现浏览器时区更改,请确保已打开开发工具。另外,您可能必须在新标签上来回切换传感器才能使其再次工作。
这里是希望NodeJS
的Windows能解决问题。