Javascript日期功能不起作用

时间:2012-10-30 15:06:22

标签: javascript html function date

您好我正在尝试将“myDate”添加31天,这是当前日期。应该将日期添加31天,然后convertDate函数应该将其翻译为“2012年11月31日”。但它不起作用。有谁知道为什么?

这是主要功能......

function process (infoarray) {
  var myDate = new Date();
  //var final = convertDate(myDate);

  var length = infoarray.length;
  var final_string;
  for (var b = 0; b < length; b++) {
    if (b == 0) {
      if (infoarray[b][3] == 'After') {
        final_string = '<b>' + infoarray[b][3] + '&nbsp;' + infoarray[b][1] + '</b><br/>' + infoarray[b][0] + '<br/>';
      } else {
        final_string = '<b>' + infoarray[b][1] + '&nbsp;' + infoarray[b][3] + '&nbsp;' + infoarray[b][2] + '</b><br/>' + infoarray[b][0] + '<br/>';
      }
    } else {
      if (infoarray[b][3] == 'After') {

        final_string = final_string + '<br/><b>' + infoarray[b][3] + '&nbsp;' + convertDate(myDate.setDate(myDate.getDate() + 31)) + '</b><br/>' + infoarray[b][0] + '<br/>';
      } else {
        final_string = final_string + '<br/><b>' + infoarray[b][1] + '&nbsp;' + infoarray[b][3] + '&nbsp;' + infoarray[b][2] + '</b><br/>' + infoarray[b][0] + '<br/>';
      }
    }
  }
  return final_string;
}

这是我从上面的函数中关注的一行...

final_string = final_string + '<br/><b>' + infoarray[b][3] + '&nbsp;' + convertDate(myDate.setDate(myDate.getDate() + 31)) + '</b><br/>' + infoarray[b][0] + '<br/>';

这是convertDate函数......

function convertDate(d) {
    var day = d.getDate();
    if (day < 10) {
        day = '0' + day;
    }
    var year = d.getFullYear();
    var month = d.getMonth();
    var months=['Jan','Feb','Mar','Apr','May','June','July','Aug','Sep','Oct', 'Nov','Dec'];
    var currentMonth = months[month];
    return (currentMonth + ' ' + day + ', ' + year);
}

3 个答案:

答案 0 :(得分:2)

myDate.setDate(...)修改Date实例的值,但不返回任何内容 您需要先调用setDate,然后将变量传递给您的函数。

答案 1 :(得分:1)

下面。 首先计算然后调用

DEMO;

var myDate = new Date();
myDate.setDate(myDate.getDate()+31);

final_string = final_string + '<br/><b>' +
infoarray[b][3] + '&nbsp;' + 
convertDate(myDate) + '</b><br/>' + infoarray[b][0] + '<br/>';

或者将其添加到函数中:

.... convertDate(myDate,31) + ....

使用

function convertDate(d,offset) {
 if ( offset ) d.setDate(d.getDate()+offset);
 var day = d.getDate();

 if (day < 10) {
    day = '0' + day;
 }
 var year = d.getFullYear();
 var month = d.getMonth();
 var months=['Jan','Feb','Mar','Apr','May','June','July','Aug','Sep','Oct', 'Nov','Dec'];
 var currentMonth = months[month];
 return (currentMonth + ' ' + day + ', ' + year);
}

DEMO

答案 2 :(得分:0)

通过使用setDate,您可以告诉Date对象将日期编号设置为介于32和62之间,这没有多大意义。

添加31天的好方法是使用getTime,它返回自1970年1月1日以来被删除的m秒数:

myDate.setTime( myDate.getTime()+31*24*60*60*1000 );
//31Days x 24 hours x 60 minutes x 60 seconds x 1000 msecs