首页 文章

我该如何存储/显示我的日期/时间字段?

提问于
浏览
0

我知道有很多关于日期/时间存储和格式化的问题,但我很难找到正确的方法 . 我的应用程序是一个Node.js应用程序,Express使用mongoose和MongoDB后端 . 我正在使用moment.js格式化我的日期/时间 .

有问题的架构如下:

const stateSchema = new mongoose.Schema({
  changed: {
    type: Date,
    default: new Date()
  }
});

基于docs,我希望默认情况下日期存储在UTC中,但我看到了:

changed: 2018-08-15 17:26:14.499

我用(哈巴狗)的东西显示日期/时间:

p= `Changed: ${moment(state.changed).format('MMMM Do YYYY, h:mm:ss a')}`

在localhost上,该应用程序显示“2018年8月15日,下午5:26:14”,但在托管的Heroku应用程序中,我得到“2018年8月15日,下午10:26:14” . 我期待“2018年8月15日,下午5:26:14”,因为我在同一时区打开Heroku应用程序,但看起来它给了我服务器时区 .

我该怎么做才能确保日期/时间显示在客户的本地时区?

1 回答

  • 0

    我认为这就是答案 . 它给了我localhost的错误时间,但无论我在哪里,都应该是托管应用程序上的正确时间 .

    向架构添加偏移量:

    const stateSchema = new mongoose.Schema({
      changed: {
        type: Date,
        default: new Date()
      },
      offset: {
        type: Number,
        default: new Date().getTimezoneOffset()
      }
    });
    

    然后在显示时减去偏移量:

    p= `Changed: ${h.moment(state.changed.getTime() - (state.offset * 60000)).format('MMMM Do YYYY, h:mm:ss a')}`
    

相关问题