0

私がここで抱えている問題は、先月の29または28に戻るのではなく、その月の終わりにマイナスに戻ると、プログラムが日ではなくマイナスの月に始まることです。以下は私の完全なコードであり、その下はグーグルスプレッドシートで生成される出力です。

function trying(){ 

  var date = new Date(); 
  var datechange = new Date();
  var array = new Array(7);

 for (var i = 0; i < 7; i++) {
    array[i] = new Array(0);
  }

  for ( var i = 0; i < 7; i++){ 
   days = i + 8
   datechange.setDate(date.getDate() - days);
   var tabName = Utilities.formatDate(datechange, 'MST', 'yyyy-MM-dd').toString(); 
       array[i][0] = tabName;
    }

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Want");
  sheet.getRange("B2:B8").setValues(array); 



}

これは、作成される日付です。

05/07/2012 04/07/2012 03/07/2012 02/07/2012 01/07/2012 30/06/2012 30/05/2012

4

3 に答える 3

1

Date.getDate()は日付(1-31)を返します-したがって、あなたがしていることは正しくありません。

代わりにこれを試してください:

var ONE_DAY = 24 * 60 * 60 * 1000; //in milliseconds
for ( var i = 0; i < 7; i++){ 
  days = i + 8
  datechange.setDate(date.getTime() - (days * ONE_DAY));
  var tabName = Utilities.formatDate(datechange, 'MST', 'yyyy-MM-dd').toString(); 
     array[i][0] = tabName;
}
于 2012-07-13T17:15:04.170 に答える
1

datechangeループの外側ではなく、ループの内側で定義する必要があります。

var date = new Date();

for ( var i = 0; i < 30; i++){ 
   days = i + 8
   var datechange = new Date();
   datechange.setDate(date.getDate() - i);
   console.log(datechange);
   }
于 2012-07-13T22:55:23.877 に答える
0

これがJavaScriptの日付の仕組みです。詳細については、こちらをご覧ください。

于 2012-07-13T16:56:51.910 に答える