getDate() 在前一天返回,但一切似乎都是正确的



我将日期发送回后端进行创建。

后端接收结束日期:

console.log(req.params.end); // req.params.end > 2019-01-17

我从中创建了一个日期对象

var endDate = new Date(req.params.end);
console.log(endDate); endDate > 2019-01-17T00:00:00.000Z (nice)

我开始分开年/月/日。

var endYear = endDate.getFullYear();
var endMonth = endDate.getMonth() + 1; // 1 - 12 range
var endDay = endDate.getDate();

但这一天总是错的,是前一天:

console.log('end date : ', endDay); // end date : 16

设置时区没有区别(我是 EST)(在我提取日期之前)

var est = { timeZone: "America/New_York" };
endDate.toLocaleString("en-US", est);

我还有一个相当相同的开始日期,它的行为符合预期:

var startDate = new Date(req.params.year,tmpStartMonth,req.params.day);
console.log(startDate) // startDate > 2019-01-10T05:00:00.000Z (this is correct)
var startDay = startDate.getDate();
console.log(startDay) // startDay > 10

接下来的一天后的时间会以某种方式影响我的结果吗?我对这里出了什么问题感到相当困惑。

事情是这样的。创建 Date 对象时,将获得 UTC 日期。在您的情况下,您将获得 01/17/2019 在 00.00 UTC。我想你在美国,所以那个日期对你来说实际上是01/16。

var utcDate = new Date('2019-01-17T00:00:00.000Z');
console.log(utcDate);
console.log(utcDate.getDate()); // 16

如果您改为使用正确的时区创建日期,您将获得预期的日期。下面是太平洋时间 (UTC-8) 的示例。

var myDate = new Date('2019-01-17T00:00:00.000-08:00');
console.log(myDate);
console.log(myDate.getDate()); // 17

我在这里没有看到任何错误(示例取自 Mozilla getDate()参考,也许您必须检查该条目

var endDate = new Date('August 19, 1975 23:15:30');
console.log(endDate.getFullYear());
console.log(endDate.getMonth()+1); // 1 - 12 range
console.log(endDate.getDate());

相关内容

  • 没有找到相关文章

最新更新