Javascript 函数没有将时间完全设置为零

Javascript 函数没有将时间完全设置为零,javascript,date,visual-studio-code,Javascript,Date,Visual Studio Code,我正在使用VisualStudio代码(v1.49.0)中的“MongoDB for VS Code”插件,并试图在MongoDB游戏场中将日期对象的时间重置为00:00:00:000 代码如下: var thisMonth = new Date(); thisMonth.setDate(1); thisMonth.setHours(0, 0, 0, 0); thisMonth; 但是,本月的输出值为: 2020-09-01T06:00:00.000Z 而不是预期的2020-09-01T00

我正在使用VisualStudio代码(v1.49.0)中的“MongoDB for VS Code”插件,并试图在MongoDB游戏场中将日期对象的时间重置为00:00:00:000

代码如下:

var thisMonth = new Date();
thisMonth.setDate(1);
thisMonth.setHours(0, 0, 0, 0);
thisMonth;
但是,本月的输出值为:

2020-09-01T06:00:00.000Z
而不是预期的2020-09-01T00:00:00.000Z。无论何时创建日期对象,都会发生这种情况。其他人是否有经验或知道为什么会发生这种情况


谢谢。

这与MongoDB无关,而是正常的JavaScript行为。见:

setHours()方法根据当地时间设置指定日期的小时数


MongoDB在存储日期之前将日期转换为UTC表示形式。您(或您的服务器)似乎位于-6:00时区。实际时间是正确的,您看到的只是一个可能不是您期望的表示。

MongoDB将始终使用UTC时间(UTC-0或Zulu/Zero时间)

您设置的小时数取决于您当地的时区,因此在本例中,最有可能是北美(UTC-6)。给出的结果末尾带有一个
Z
,表示这是祖鲁时间(零时间)。 要获取本地计算机上的偏移量,您可以使用本月的
。getTimezoneOffset()

要将时间设置为UTC时间,请使用本月的
setUTCHours(0)

您将看到,当将时间设置为UTC时间
0
时,您将实际获得所需的
0
结果


MongoDB不了解时区。

导致本月
出现
?将实际输出添加到问题。@D.SM在上述两行代码之后,本月设置为2020-09-22T06:00:00.000Z。我在问题中提到了这一点。您提供了,但您没有提供呈现时的实际输出。@D.SM我按照要求添加了输出。如果您居住在北美,此输出是正确的,正如预期的那样,这是有意义的,谢谢。我打算使用我创建的日期来匹配大于2020-09-01T00:00:00.000Z的日期,因此我需要确保这是一个月的开始。为了验证,您说它是,只是以我不期望的方式表示的,对吗?它是输出中指示的Z时间。不是您所期望的,而是它在MongoDB中的具体存储方式。谢谢你的解释!