0

嗨,我正在尝试将 31 天添加到“myDate”,即当前日期。它应该让日期加上 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);
}
4

3 回答 3

2

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

于 2012-10-30T15:08:58.623 回答
1

这里。先计算再调用

演示

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

演示

于 2012-10-30T15:23:45.767 回答
0

通过使用 setDate,您可以告诉 Date 对象将天数设置为 32 到 62 之间的某个值,这没有多大意义。

添加 31 天的一个好方法是使用 getTime,它返回自 1970 年 1 月 1 日以来经过的毫秒数:

myDate.setTime( myDate.getTime()+31*24*60*60*1000 );
//31Days x 24 hours x 60 minutes x 60 seconds x 1000 msecs
于 2012-10-30T15:16:49.083 回答