【发布时间】:2019-01-22 20:23:52
【问题描述】:
我知道有很多关于日期/时间存储和格式的问题,但我很难找到正确的方法。我的应用程序是一个 Node.js 应用程序,它使用带有 MongoDB 后端的猫鼬 Express。我正在使用 moment.js 来格式化我的日期/时间。
有问题的架构如下所示:
const stateSchema = new mongoose.Schema({
changed: {
type: Date,
default: new Date()
}
});
基于docs,我希望日期默认以 UTC 格式存储,但我看到的是:
changed: 2018-08-15 17:26:14.499
我用类似 (pug) 的东西显示日期/时间:
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 应用程序,但看起来它给了我服务器时区。
我应该怎么做才能确保日期/时间显示在客户的本地时区中?
【问题讨论】:
-
在您提供的文档中写到,您也可以保存偏移量,然后相应地转换为您的本地时间。
-
除非我读错了,否则该文档说日期存储为 UTC 并默认显示在客户端本地时区,如果你想在原始时显示它,你只需要 getTimezoneOffset()时区,我没有。我错过了什么?
-
这里发生的是服务器端渲染,因为整个 HTML 是在服务器上创建的,然后发送到浏览器(客户端)。您必须借助脚本获取客户端的时区,然后将 UTC 转换为该时区。
-
有道理。那么如何在 Node.js 应用程序中获取客户端的时区?
标签: node.js mongodb mongoose momentjs