gpt4 book ai didi

sequelize.js - Sequelize 将 UTC 时间转换为错误的本地区域

转载 作者:行者123 更新时间:2023-12-03 22:25:13 26 4
gpt4 key购买 nike

我有一个表,在 UTC 区域中存储带有时区的日期时间。它存储在 PostgreSQL 中。表中的数据未转换为任何可取的区域。但是,当我使用 findAll 方法进行查询时,它返回的结果是时区 +5 而不是 -5(这是正确的服务器区域)。我将默认的 useUTC 保留为 true 而不设置 truefalse 因为 true 是默认值。下面是一个例子:
数据库记录 "2020-10-09T03:49:28.652Z"Sequelize 响应 "2020-10-09T08:49:28.652Z"预期响应 "2020-10-09T22:49:28.652Z"我暂时正在使用此解决方法。
注意:这是在 ExtJS 6.2 Chart axes renderer function 中运行的。

renderer: function (axis, date_str, layoutContext, lastLabelText) {
var d = new Date(date_str.replace('Z', '').replace('T', ' ') + ' UTC');
d.setHours(d.getHours() - 5);
return Ext.Date.format(new Date(d), 'H:i:s');
我担心的是 Sequlize 使用用户时区而不是服务器时区。此外,此时区在夏令时可能不正确。
sequelize 和上面的渲染函数有什么好的修复方法吗?
编辑:
我从日志中添加了 findAll 原始 SQL 查询:
SELECT "id", "capture_datetime", "pco2", "createdAt", "updatedAt" FROM "bos_pco2" AS "bos_pco2" WHERE "bos_pco2"."capture_datetime" IS NOT NULL ORDER BY "bos_pco2"."capture_datetime" DESC LIMIT 30;
捕获 date_time 是一个带有 UTC 日期和时间的 Date 列。
当提供 UTC 日期时间时,另一个原始 SELECT 查询现在可以工作。
此原始选择查询也不起作用。在 PG Admin 中,我得到了一个结果,但没有结果与 sequelize。
SELECT * FROM bos_chl_a_pc_pe WHERE capture_datetime 
BETWEEN '2020-10-10T22:41:44.000Z'::TIMESTAMP and '2020-10-11T00:41:44.045Z'::TIMESTAMP
ORDER BY capture_datetime;

最佳答案

默认情况下,Sequelize 将使用它正在运行的系统的时区并将返回的日期转换为该时区格式。如果要强制 Sequelize 使用 UTC 日期(而不是遵守 DST),则需要在创建 Sequelize 连接时指定时区选项。

const instance = new Sequelize(
databaseName,
userName,
userPassword,
{
host: databaseHost,
dialect: 'postgres',
// specify to use UTC and the timezone here
dialectOptions: {
useUTC: true, // tell the driver you want to use UTC
timezone: 'Etc/GMT0', // this works for me with mariadb
},
timezone: 'Etc/GMT0', // the github issue indicates the TZ here for postgres
}
);
有关更多信息,请参阅此 Github 问题: https://github.com/sequelize/sequelize/issues/854

关于sequelize.js - Sequelize 将 UTC 时间转换为错误的本地区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64281078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com