为什么在Date对象中添加一个月会返回一个奇怪的数字?

时间:2017-12-03 05:49:28

标签: javascript

以下返回11是正确的。

var month = d.getMonth();
alert(month);

当我尝试添加一个月时,它会返回一些非常不同的东西

var month = d.setMonth(d.getMonth() + 1);
alert(month);

返回:1513230546878

4 个答案:

答案 0 :(得分:1)

您在代码中使用的方法的返回值如下

  1. d.getMonth() - 一个从0到11的数字,代表月份(Link
  2. d.setMonth() - 一个数字,表示日期对象与1970年1月1日午夜之间的毫秒数(Link
  3. 请注意,d.setMonth()会修改您的Date对象。因此,如果您希望代码按预期工作,可以按如下方式编写

    var d = new Date()
    var month = d.getMonth();
    alert(month);
    
    d.setMonth(d.getMonth() + 1);
    alert(d.getMonth());

答案 1 :(得分:0)

<!--[if lte IE 9]> <script type="text/javascript"> alert('Your version of Internet Explorer doesn\'t support.') </script> <![endif]--> 方法返回更新的时间戳值(请参阅docs)。这就是为什么你得到一个很长的数字。

如果您想获得月份,请按以下方式使用

d.setMonth()

希望有所帮助

答案 2 :(得分:0)

在java脚本中,如果你写这个:

var month = d.setMonth(d.getMonth() + 1);

您获得时间戳。含义,表示您选择的月份的整数。

这是因为setDate接受dayValue参数:

Date.setDate(dayValue)

意思是:

  var dt = new Date("Aug 28, 2008 23:30:00");
    dt.setDate(24);
    console.log(dt);

将导致:

Sun Aug 24 2008 23:30:00 //+ your standard gmt time 

如需进一步查询,请参阅此Link

答案 3 :(得分:0)

//set date to now:
var d = new Date();
console.log(d);

//just checking
var month = d.getMonth();
console.log(month);

//add a month
d.setMonth(d.getMonth() + 1);

//now the month is one ahead:
console.log(d.getMonth());
console.log(d);