我只想显示1967年6月29日的日期--但它在我的angular应用程序中显示为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
具有讽刺意味的是-编辑表单的日期字段显示为6/29/1967...
我做错了什么?
发布于 2018-03-04 02:03:51
如果您在时间的末尾添加一个'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'))
...to获取以下内容:
Thu Jun 29 1967 00:00:00 GMT-0400 (EDT)
顺便说一句,如果您希望能够将除固定的UTC偏移量以外的任何时间转换为客户端系统的本地时间,则需要:https://momentjs.com/timezone/
基本moment.js提供的本地化不包括时区转换。
https://stackoverflow.com/questions/49091122
复制