为什么我的JavaScript Date对象出现此错误?

时间:2018-10-16 00:40:39

标签: javascript

我用JS编写了以下代码

var d = new Date(2019, 9, 14);

var currentTime = d.getTime();
var daysToAdd = 3;

var secondsInDay = 86400;

var d = new Date(currentTime + daysToAdd*secondsInDay);

var year = d.getFullYear();
var month = ("0" + (d.getMonth())).slice(-2);
var day = ("0" + d.getDate()).slice(-2);

console.log('result in Y-M-D is: ' + year + '-' + month + '-' + day);

此输出到 Y-M​​-D结果为:2019-09-14

我在这里做错了什么?如何将其更改为输出 Y-M​​-D结果为:2019-09-17 ,我本来打算这样做的

4 个答案:

答案 0 :(得分:3)

发生这种情况是因为在此代码上

new Date(currentTime + daysToAdd*secondsInDay);

secondsInDay以秒表示,而currentTime以ms表示。如果将secondsInDay乘以1000(以毫秒为单位的等效值),则会得到所需的日期。

答案 1 :(得分:3)

代替

var d = new Date(currentTime + daysToAdd*secondsInDay);

您可以使用

d.setDate(new Date().getDate()+3);

答案 2 :(得分:0)

您的问题是日期对象的构造函数使用 MILISECONDS 来计算日期,而您正在使用 SECONDS 来添加这三天。而不是86400(秒),您需要使用值86400000(毫秒)。

再见!

答案 3 :(得分:0)

您可以将天数直接添加到d.getDate()

var d = new Date(2019, 9, 14);
  var daysToAdd = 3;
  var new_day = d.getDate() + daysToAdd;
  var new_d = new Date(d.getFullYear(), d. getMonth(), new_day);

  alert('result in Y-M-D is: ' + new_d.getFullYear() + '-' + new_d. getMonth() + '-' + new_day);