0

我只想将日期显示为 1967 年 6 月 29 日 - 但它会以 1967-06-28 19:00:00.000 的形式返回到我的角度应用程序中 - 所以它自然会显示 1967 年 6 月 28 日。

我的 HTML 表单日期选择器 - 已选择:06/29/1967

表格已提交...

MongoDB 显示:1967-06-28 19:00:00.000

我在中央 TZ,所以这作为 UTC 的存储是有意义的。

Mongo 数据类型是在 mongoose 模式中定义的“日期”,如下所示:

,dob: {
    type: Date
    ,required: false
    ,default: null
}

为了在浏览器上进行转换,我安装了 - angular2-moment - 因为它“宣传”了一个功能来做这件事。我没有收到错误 - 但我也没有得到任何显示变化。

DOB: {{user.dob | date:'mediumDate' }} 
DOB: {{user.dob| amLocal | amDateFormat: 'MMM DD, YYYY'}}

两者都显示

Jun 28, 1967

具有讽刺意味的是 - 编辑表单的日期字段,显示 06/29/1967...

我究竟做错了什么?

4

1 回答 1

1

如果您在时间末尾添加“Z”,则可以确保将其解析为 UTC,如下所示:

1967-06-28 19:00:00.000Z

问题是,如果您将来自数据库的输入视为 UTC,您最终会比 06-29 晚 9 小时,而不是将日期/时间向前。因此,您的数据库时间戳似乎实际上比 UTC 晚了几个小时。

我在东部标准时间,它需要这个:

new Date(Date.parse('1967-06-28 19:00:00.000 GMT-0900'))

...得到这个:

Thu Jun 29 1967 00:00:00 GMT-0400 (EDT)

顺便说一句,如果您希望能够从固定 UTC 偏移量以外的任何内容转换为客户端系统的本地时间,您需要:https ://momentjs.com/timezone/

基本 moment.js 提供的本地化不包括时区转换。

于 2018-03-04T02:03:51.250 回答