我已正确配置Sequelize以将我的日期在当地时间('America / Chicago'/ -6:00)存储到我的MS SQL Server数据库中,但是当我检索它们时,它们以UTC显示 .

在我的Sequelize连接设置中,我在dialectOptions中有 timezone: 'America/Chicago'useUTC: false . 我的理解是这两个设置应该确保我的日期在我当地的时区存储和检索 .

在启动node / express应用程序之前,我还将TZ环境变量设置为“America / Chicago” .

我的Sequelize连接设置:

const sequelize = new Sequelize('db', 'user', 'pass', {
  host: 'host',
  dialect: 'mssql',
  timezone: 'America/Chicago',
  dialectOptions: {
    encrypt: false,
    useUTC: false
  },
  operatorsAliases: false,
  pool: {
    max: 5,
    min: 0,
    acquire: 30000,
    idle: 10000
  },
});

日期在数据库中正确存储:

myDate: '2018-11-07 00:00:00 -06:00'
createdAt: '2018-12-08 13:46:17.617 -06:00'
updatedAt: '2018-12-08 13:46:17.617 -06:00'

使用API endpoints 通过Postman返回Sequelize:

{
    "mydate": "2018-11-07T06:00:00.000Z",
    "createdAt": "2018-12-08T19:46:17.617Z",
    "updatedAt": "2018-12-08T19:46:17.617Z"
}

在我的app.js中,我输出process.env.TZ:

console.log(`Starting app. TZ set to ${process.env.TZ}`);
// Starting app. TZ set to "America/Chicago"

对于返回UTC中的日期,或者我做错了什么,是单调乏味还是Sequelize?

另外,为什么myDate以“.000Z”作为时区返回,但是创建了和更新以“.617Z”作为时区返回?两者都返回UTC,因为检查日期确实比我当地时间提前了6个小时 . 我理解'.000Z',但无法找到关于'.617Z'的任何信息 .

任何线索将不胜感激!