我在node.js中使用Sequelize来保存打开和关闭时间.我也正在使用moment.js进行格式化.更改FindOrCreate我正在这样做:
I'm using Sequelize in node.js to save open and close times. I'm also using moment.js to format. Alter a FindOrCreate I'm doing this:
result.open = moment(hours.open, "hh:mma").format("YYYY-MM-DD HH:mm:ss"); result.save() ...这可以正常工作,并且时间被格式化为MySQL的datetime格式.问题是当我检索到Seqquelize认为它是UTC时间并将其转换为EST(我的服务器时区)时.
This works fine and the time gets formatted to MySQL's datetime format. The Problem is when I retrieve the time Seqquelize thinks it's a UTC time and converts it to EST (my server timezone).
我希望它像UTC一样进入数据库并以相同的方式出现.我做错什么了吗?为什么Sequelize在插入时不将其转换为UTC,而是假定它是UTC?另外,有没有办法让它尝试转换为我的服务器时区?
I would prefer it to go into the database as UTC and come out the same way. Is there something I'm doing wrong? Why does Sequelize not convert it to UTC on insert but assumes it's UTC coming out? ALso, is there a way to not have it try to convert to my server timezone?
推荐答案我遇到了同样的问题. 我已经将其固定为这样:
I had the same problem. i've fixed it like this:
config/sequelize.js:
const sequelize = new Sequelize(database, user, password, { host, dialect: 'mysql', port, operatorsAliases, dialectOptions: { useUTC: true, // -->Add this line. for reading from database }, timezone: '+02:00', // -->Add this line. for writing to database pool: { max: 10, min: 0, idle: 10000, }, logging: console.log, // define: {}, })momentJS(UTC):
momentJS (UTC):
const ACCEPT_FORMAT = 'YYYY-MM-DD hh:mm:ss' const { start_date, end_date } = req.params const start = moment.utc(start_date, ACCEPT_FORMAT) const end = moment.utc(end_date, ACCEPT_FORMAT) console.log(start) console.log(end)希望它将对某人有所帮助....:)
Hope it will help someone.... :)
更多推荐
Sequelize.js中的UTC日期
发布评论