我尝试使用
在我的mongodb文档中添加新日期db.collection('course').insertOne({
date: new Date(item.date)
});
item.date
来自
items.push({
date: moment(new Date(day.label)).tz('Europe/Paris').format('YYYY/MM/DD'),
});
day.label
与'14 November 2016'
item.date
格式化为2016/11/14
文档插入工作但日期未正确格式化,例如2016/11/14
Mongo insert "date" : ISODate("2016-11-13T23:00:00Z")
每个插入的日期都会移动-1天
在MongoDB中插入自定义格式化日期的正确方法是什么? 我应该改变momentJs的日期格式吗?
编辑:
由于时区不同,日期会发生变化。
答案 0 :(得分:1)
它没有一天转移,它实际上根本没有转移。
显示的时间移动了一个小时。如果您注意到,时间已经是前一天的23:00,而不是默认为您指定的日期的午夜。
更重要的是,时间戳中的Z后缀表示时区为UTC,UTC中的2016-11-13T23:00:00
表示与时间戳2016-11-14T00:00:00+01:00
相同的时刻。因此正确创建了日期时间,但只是在您正在创建它的不同时区向您显示。
答案 1 :(得分:0)
如果您想要解决所有日期UTC问题,请存储 日期作为标准ISO格式
// India
moment().toISOString() // "2016-11-06T06:17:33.520Z"
// canada
moment().toISOString() // "2016-11-06T06:19:42.133Z"
now see the diffrence by convering date from database
// canada time zone
moment("2016-11-06T06:19:42.133Z").format() // "2016-11-05T23:19:42-07:00"
// india time zone
moment("2016-11-06T06:19:42.133Z").format() //"2016-11-06T11:49:42+05:30"
如上所示,看到本地UTC的差异,因此不必转换任何日期 时区到其他时区