Javascript &引用;getDate().toJSON();失去一天

Javascript &引用;getDate().toJSON();失去一天,javascript,angularjs,date,momentjs,pikaday,Javascript,Angularjs,Date,Momentjs,Pikaday,我正在使用日期选择器插件(通过and with)并将值发送到服务器。不过,转换为json似乎要浪费一天时间: var d = myPikaObject.getDate(); console.log(d); // Thu Apr 30 2015 00:00:00 GMT+0200 (SAST) console.log(d.toJSON()); // 2015-04-29T22:00:00.000Z 我认为这是一个momentjs问题,但我不知道出了什么问题。这都

我正在使用日期选择器插件(通过and with)并将值发送到服务器。不过,转换为json似乎要浪费一天时间:

var d = myPikaObject.getDate();
console.log(d);              // Thu Apr 30 2015 00:00:00 GMT+0200 (SAST)
console.log(d.toJSON());     // 2015-04-29T22:00:00.000Z

我认为这是一个momentjs问题,但我不知道出了什么问题。

这都是关于你约会的方式

当您刚刚打印d时,您有:

Thu Apr 30 2015 00:00:00 GMT+0200 (SAST)

现在是GMT+2,所以当您打印d.ToJson()时,您会损失2个小时。因此,如果您在前一天晚上22点

给您已经有时间使用momentjs,您可以尝试
moment.utc()
方法。文件说:

从2.0.0版开始,可以将区域设置键作为第三个参数传递 到矩()和矩.utc()

使用utc()方法可以做更多的工作


这一天一点也不浪费。看到GMT+0200了吗?如果你抽出2个小时的时间,日期会是什么?我想你可能会混淆改变使用不同的时区与失去一天。由于浏览器和服务器时区的不同,我发生了这种情况。由于时区lol,损失一天=小时的差异。诅咒,我需要的只是日期-我以为T22是对时区lol的引用。谢谢
toJSON
输出ISO时间字符串
console.log
输出区域设置时间字符串。这就是区别。不耽误时间,好吧,我明白了。非常感谢。但是我如何获得正确的日期呢?同时存储时区,然后在以后解析它时,将时区考虑在内。或者,不要使用
.toJSON()
,而是使用
.toString()
。“如何获得正确的日期?”始终以UTC格式存储日期/时间。仅转换为本地时间用于显示。@FelixKling我理解你所说的逻辑,在通常情况下,我会,但老实说,在我看来,有一些类型的日期不应该本地化:例如,生日只是连接到一个日期,而不是“可本地化的”日期/时间,如果你搬到新西兰,你就可以早点过生日。谢谢,我使用的是
时刻(d).format(“YYYY-MM-DD”)
(其中d是上述问题中的变量)。很高兴为你提供帮助!也许你也会投票,因为这有帮助吗?:)
moment('2012 juillet', 'YYYY MMM', 'fr');
moment('2012 July',    'YYYY MMM', 'en');
moment.utc();
moment.utc(Number);
moment.utc(Number[]);
moment.utc(String);
moment.utc(String, String);
moment.utc(String, String[]);
moment.utc(String, String, String);
moment.utc(Moment);
moment.utc(Date);