如何在node.js中设置默认时区?
当前回答
更新node.js v13版本
正如@Tom指出的,现在v13中内置了完整的icu支持。因此可以省略设置步骤。您仍然可以自定义在运行时构建或使用icu的方式:https://nodejs.org/api/intl.html
对于Windows上的node.js,您可以执行以下操作:
如果已经安装full-icu,请安装它,它将正确应用日期区域设置 NPM I全icu 或全局:NPM I -g full-icu 在代码中使用toLocaleString(),例如: 新的日期()。toLocaleString('en-AU', {timeZone: '澳大利亚/墨尔本'}) 这将产生类似于:25/02/2019,3:19:22 pm。如果你喜欢24小时,'en-GB'将产生:25/02/2019,15:19:22
对于node.js作为Azure web应用程序,除了WEBSITE_TIME_ZONE的应用程序设置外,你还需要将NODE_ICU_DATA设置为例如<你的项目>\node_modules\full-icu,当然,在你完成npm i full-icu之后。不建议在Azure上全局安装包,因为该目录是临时的,可能会被删除。
裁判: 1. NodeJS没有正确应用日期区域设置
你也可以用intl选项构建node.js,更多信息在这里
其他回答
更新node.js v13版本
正如@Tom指出的,现在v13中内置了完整的icu支持。因此可以省略设置步骤。您仍然可以自定义在运行时构建或使用icu的方式:https://nodejs.org/api/intl.html
对于Windows上的node.js,您可以执行以下操作:
如果已经安装full-icu,请安装它,它将正确应用日期区域设置 NPM I全icu 或全局:NPM I -g full-icu 在代码中使用toLocaleString(),例如: 新的日期()。toLocaleString('en-AU', {timeZone: '澳大利亚/墨尔本'}) 这将产生类似于:25/02/2019,3:19:22 pm。如果你喜欢24小时,'en-GB'将产生:25/02/2019,15:19:22
对于node.js作为Azure web应用程序,除了WEBSITE_TIME_ZONE的应用程序设置外,你还需要将NODE_ICU_DATA设置为例如<你的项目>\node_modules\full-icu,当然,在你完成npm i full-icu之后。不建议在Azure上全局安装包,因为该目录是临时的,可能会被删除。
裁判: 1. NodeJS没有正确应用日期区域设置
你也可以用intl选项构建node.js,更多信息在这里
我知道这个帖子很旧了,但我认为这将帮助任何像我一样从谷歌登陆这里的人。
在GAE Flex (NodeJs)中,你可以在app.yaml文件中设置环境变量TZ(一个管理应用程序中所有日期时区的变量),我给你留了一个例子:
app.yaml
# [START env]
env_variables:
# Timezone
TZ: America/Argentina/Buenos_Aires
从节点13开始,您现在可以重复设置process.env.TZ,它将反映在新的Date对象的时区中。我不知道我是否会在生产代码中使用它,但它在单元测试中绝对有用。
> process.env.TZ = 'Europe/London';
'Europe/London'
> (new Date().toString())
'Fri Mar 20 2020 09:39:59 GMT+0000 (Greenwich Mean Time)'
> process.env.TZ = 'Europe/Amsterdam';
'Europe/Amsterdam'
> (new Date().toString())
'Fri Mar 20 2020 10:40:07 GMT+0100 (Central European Standard Time)'
我使用这个NPM包unix-system-timezone
来自@uhef的解决方案env TZ='Europe/Amsterdam' node server.js适用于应用程序不能使用fork进程的情况,但当你使用fork进程时,特别是当你使用像gulp这样的构建工具启动应用程序时,命令gulp将接受env值,但gulp创建的进程不(你的应用程序)。
要解决这个问题,你必须做到:
$ export TZ="Europe/Amsterdam"; gulp myTask
这将为您正在使用的控制台中启动的所有进程设置TZ环境变量,包括在同一个控制台中gulp命令后执行的所有子进程,而不需要使用export TZ="Europe/Amsterdam"前缀执行它们;一次。
推荐文章
- 为什么在节点REPL中没有定义__dirname ?
- 在Node.js中克隆对象
- Node.js中的process.env.PORT是什么?
- js的Mongoose.js字符串到ObjectId函数
- ELIFECYCLE Node.js错误是什么意思?
- 如何完全卸载Ubuntu中的nodejs, npm和node
- 在猫鼬模式中添加created_at和updated_at字段
- 我如何把变量javascript字符串?
- 如何强制tsc忽略node_modules文件夹?
- NPM全局安装“无法找到模块”
- MongoDB和Mongoose的区别
- 如何使用Express.js指定HTTP错误码?
- 通过npm安装Twitter Bootstrap的目的?
- 在PostgreSQL中使用UTC当前时间作为默认值
- 将文件中的字符串替换为nodejs