Sequelize createdAt 和 updatedAt 时间戳错误

Rol*_*nez 5 timezone timestamp sequelize.js momentjs sequelize-cli

我使用 sequelize 创建了一个带有时间戳的表。当我更新表时,它会自动更新时间戳(即 createdAt 和 updatedAt)。但这些时间与我的当地时间不同。如果我使用 moment 像这样转换时区,我附上了 2 个带有模型脚本的屏幕截图,updateddAt: moment().utc(new Date())它工作正常。有没有办法用当前时区自动更新时间戳?

    'use strict';
module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface.createTable('States', {

      hashCode: {
        type: Sequelize.STRING,
          unique:true,
          autoIncrement:false
      },
      createdAt: {
        allowNull: false,
        type: Sequelize.DATE
      },
      updatedAt: {
        allowNull: false,
        type: Sequelize.DATE
      }
    });
  },
  down: (queryInterface, Sequelize) => {
    return queryInterface.dropTable('States');
  }
};
Run Code Online (Sandbox Code Playgroud)

更新表格时 在此处输入图片说明

我在电脑上的当地时间 在此处输入图片说明

小智 7

像这样创建数据库,您将根据当地时间自动创建更新

const sequelize = new Sequelize("db_name", "username", "password", { logging: false, host: "localhost", dialect: "mysql", dialectOptions: { // useUTC: false, //for reading from database dateStrings: true, typeCast: true, timezone: "+05:30" }, timezone: "+05:30", //for writing to database operatorsAliases: false });


Ada*_*dam 5

您应该timezone在续集选项中设置该属性:

const sequelize = new Sequelize({
  database: 'db_name',
  username: 'username',
  password: null,
  dialect: 'mysql'
  timezone: 'utc', // your timezone comes here, ex.: 'US/Hawaii'
});
Run Code Online (Sandbox Code Playgroud)