Ján*_*nos 12 mysql timezone node.js
当我直接请求MySQL时,我以UTC格式返回日期(我在MySQL服务器中设置UTC),但是使用NodeJS我得到UTC + 2本地时区数据,为什么?如何设置NodeJS以获得UTC?
Ján*_*nos 51
我在初始化mysql连接时在index.js中添加了时区
var db_config = {
host : 'localhost',
user : 'xxx',
password : '',
database : 'xxx',
timezone: 'utc' //<-here this line was missing
};
Run Code Online (Sandbox Code Playgroud)
我知道这个问题已经得到解答,而且很旧,但是如果您使用 mysql2 库并且在将时区设置为 UTC 时遇到问题,您可以使用“Z”时区来完成。Z代表祖鲁语,解释来自这里
const mysql = require('mysql2')
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
database: 'test',
password: 'mypass',
timezone: 'Z',
})
Run Code Online (Sandbox Code Playgroud)
设置此时区配置意味着每个日期(Javascript Date 对象)在发送到数据库时将被转换为 utc,而在来自数据库时将被转换为 FROM utc。这是来自 mysql2 GitHub 存储库的实现。
在一次又一次陷入这个问题之后,我找到了所需的解决方案。
我的应用程序通过 ORM 从数据库nodeJS
获取数据。mySQL
Sequelize
确保各地时区相同。
config.js
:
const timezone = 'UTC'
process.env.TZ = timezone
Run Code Online (Sandbox Code Playgroud)
sequelize_config.js
:
const sequelize = new Sequelize(database, user, password,
options: {
host,
dialect: 'mysql',
port,
dialectOptions: {
/* useUTC: true, **deprecated** */
timezone: 'utc'
},
}
}
Run Code Online (Sandbox Code Playgroud)
希望它能节省某人的时间,避免陷入这个循环......:)
归档时间: |
|
查看次数: |
15011 次 |
最近记录: |