Angular2-moment,MongoDB UTC时间

问题描述 投票:0回答:1

我希望只显示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模式中定义的“Date”,如下所示:

,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 ...

我究竟做错了什么?

javascript angular mongodb angular2-moment
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提供的本地化不包括时区转换。

© www.soinside.com 2019 - 2024. All rights reserved.