0

こんにちは、現在の日付である「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);
}
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 日を追加する良い方法は、1970 年 1 月 1 日から経過したミリ秒数を返す getTime を使用することです。

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 に答える