我正在尝试在我的项目中使用日期。由于日期被偏移5个小时(我居住在美国东部时区,-5),我始终遇到一些奇怪的小变化。
生产环境默认为UTC,我希望在我的本地环境中也能够使用UTC。
是否有一种方法可以使用express
或一些npm
包在UTC中启动服务器?这是一个机器问题吗?
我不想与生产环境使用不同的代码。
我正在尝试在我的项目中使用日期。由于日期被偏移5个小时(我居住在美国东部时区,-5),我始终遇到一些奇怪的小变化。
生产环境默认为UTC,我希望在我的本地环境中也能够使用UTC。
是否有一种方法可以使用express
或一些npm
包在UTC中启动服务器?这是一个机器问题吗?
我不想与生产环境使用不同的代码。
env TZ='Europe/Amsterdam' node server.js
最简单的方法是在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
# Actual timezone env variable set
ENV TZ Europe/Amsterdam
CMD [ "npm", "start" ]
大多数情况下,您甚至不需要手动设置UTC时间。Docker容器中的默认时间将是UTC。
互联网上充满了有关如何将nodeJS应用部署到docker的教程。其中一个好的教程是https://nodejs.org/en/docs/guides/nodejs-docker-webapp/
我也会建议Moment.js,但如果你需要更多全局方案,有两点提示:
https://github.com/nodejs/node-v0.x-archive/issues/3044
=> 你可能有一些版本差异,这解释了不同的行为
在本地环境中强制使用UTC:
在Linux上:export TZ=UTC
在Windows上:$env:TC = 'UTC'
步骤1:
将Windows操作系统的时间更改为UTC
和英国地区
(用于军事时间)。
步骤2:
在Chrome开发工具中,将您的传感器设置为所需的时区。在我的情况下是EDT/EST
注意:
确保在想要实施浏览器时区更改时打开开发工具。此外,您可能需要在新标签上来回切换传感器以使其再次正常工作。
希望NodeJS
能够为Windows找到解决方案。