JS检索一年中的第一天和最后一天



给定一年,我试图检索当前年份的开始和结束(例如01-01-XXXX 00:00和12-31-XXXX 23:59:59(,但我得到了不正确的结果。

我的代码:

var date = new Date(2020, 0, 1);
var end_date = new Date(2020, 11, 31);
console.log(date, end_date);

结果:

2019-12-31T23:00:00.000Z 2020-12-30T23:00:00.000Z

奇怪的是,如果我在浏览器控制台中运行它,这会很好,所以我想这与Node或我的时区有关?

该代码在当前环境的本地时区中创建一年的开始和结束日期是正确的。

当您将它们记录到控制台时,会显示它们的等效UTC日期,显然,您是在时间为UTC+1的地方运行此程序的。

因此,如果您想要本地日期作为一年的开始和结束,那么该代码是正确的。如果您想要UTC日期作为一年的开始和结束,您可以这样做:

var date = new Date(Date.UTC(2020, 0, 1));
var end_date = new Date(Date.UTC(2020, 11, 31));
console.log(date, end_date);

您看到Node和浏览器之间存在差异的原因是,没有将日期记录到控制台的标准。Node以ISO Z格式(UTC(记录它们,有些浏览器则以本地时间记录它们,这正是您所看到的。

您在浏览器控制台上得到了正确的答案,因为JavaScript是一种客户端脚本语言,浏览器在成功请求后会在本地机器上对其进行解释,因此,占用您的本地时区。因此,如果您编写此JS代码并在浏览器或任何本地JS环境中运行,您将获得正确的结果

但是,NodeJS是从JavaScript派生而来的服务器端框架。这意味着任何用NodeJS或任何服务器端语言编写的东西都将在服务器上执行,并且您的代码将考虑服务器所在地的时区。

所以使用JavaScript来显示本地时区

最新更新