gpt4 book ai didi

javascript - Sequelize Date 返回错误的日期(减 1)

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

我的一个表有一个名为birthdate 的字段,其数据类型为Date,但是当我尝试通过Express 应用程序导出数据时,它会将日期更改为比应有的小1。例如,当我导出它时,生日真的是 6/20/1978,它变成了 6/19/1978。

我注意到我在注销数据时注意到的一些事情是,即使它是一个仅限日期的字段(Sequelize?)正在向其中添加时间戳。因此,如果我不对日期进行任何格式化(我需要这样做),那么日期将是正确的,但对于我们的导出是不可读的。

当我从我的开发笔记本运行应用程序时,一切正常,但是当我推送到 QA 时,它返回错误的日期。

如果我从我的笔记本(位于太平洋时区)打开 PG3Admin 来查询 QA/生产服务器(位于夏威夷时区)上的数据,数据看起来是正确的。

我正在使用 Sequelize v3.4.1 连接到 Postgres 9.3 数据库。同样在我的 Sequelize 配置文件中,我设置了 "timezone": "-10:00"选项。

最佳答案

最好在 Sequelize 中使用数据类型 DATEONLY 存储,并使用 DATE 作为时间戳
根据 github source

_applyTimezone(date, options) {
if (options.timezone) {
if (momentTz.tz.zone(options.timezone)) {
return momentTz(date).tz(options.timezone);
}
return (date = moment(date).utcOffset(options.timezone)); <-- this will convert your date to UTC
}
return momentTz(date);
}
您需要在 sequelize 配置中定义时区,以防生日最好使用 DATEONLY 数据类型
所以你的模型可以像
birthday: {
type: DataTypes.DATEONLY
},
createdAt: {
type: DataTypes.DATE
},
updatedAt: {
type: DataTypes.DATE
}
所有数据类型都可以在 doc 中看到

关于javascript - Sequelize Date 返回错误的日期(减 1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39913997/

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