getDate()返回前一天,但一切似乎正确

时间:2019-01-17 17:04:28

标签: javascript

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

后端接收结束日期:

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

日复一日的以下时间会以某种方式影响我的成绩吗?我对这里的问题很困惑。

2 个答案:

答案 0 :(得分:2)

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

adb install -r new-version.apk

如果改为使用正确的时区创建日期,则会获得所需的日期。这是太平洋时间(UTC-8)的示例。

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

答案 1 :(得分:0)

我在这里没有发现任何问题(例如,摘自mozilla getDate() reference的示例

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());