2017-09-02 259 views
0

我想天的數組轉換的陣列計算日期

interval_dates = [] 
var intervals = rows[index+1][0].split(',') 
var now = new Date(); 
for (i in intervals){ 
    // add a day 
    interval_dates.push(now.setDate(now.getDate() + intervals[i])); 
} 
    Logger.log(interval_dates); 

我看到

[1.505998326018E12, 1.522500726018E12, 1.546869126018E12, 1.552654326018E12, 1.564750326018E12], ] 

我究竟做錯了什麼?

+0

你的數組應該包含數字而不是字符串。 – Pointy

+0

你嘗試過'toDateString()'方法嗎? https://www.w3schools.com/jsref/jsref_todatestring.asp – DaveCoast

回答

1

var dateRange = []; 
 

 
['1','2','3','4','5'].forEach(function(dayIncrement) { 
 
    var date = new Date(); 
 
    date.setDate(date.getDate() + parseInt(dayIncrement)); 
 
    dateRange.push(date); 
 
}); 
 

 
console.log(dateRange);

1

的時間間隔是字符串,你需要得到今天的白天和使用+interval其轉換爲數字後加的間隔,所以這將是now.getDate() + +intervals[i],然後調用的結果new Date(),當然改變從環i in intervals到數範圍:

var intervals = ['1','2','3','4','5']; 
 
var interval_dates = []; 
 
var date; 
 
for (var i=0; i<intervals.length; i++){ 
 
    // add a day 
 
    date = new Date(); 
 
    interval_dates.push(new Date(date.setDate(date.getDate() + +intervals[i]))); 
 
} 
 
console.log(interval_dates);

+0

你的答案是完全奇怪的,併產生錯誤的結果 –

+0

@AlexanderElgin恐怕控制檯不同意你,因爲它產生了一個正確的結果。 –

+0

最後在2修復後,您的解決方案提供了正確的結果。這太好了 –

1
function arrayOfDays() 
{ 
    var dayA=[1,2,3,4,5]; 
    var today=new Date().setHours(0,0,0,0); 
    var day=24*60*60*1000; 
    var days=[]; 
    for(var i=0;i<dayA.length;i++) 
    { 
     days.push(Utilities.formatDate(new Date(today + (i * day)), Session.getScriptTimeZone(), "MM/dd/yyyy")); 
    } 
    //Logger.log(days); 
    var ui=HtmlService.createHtmlOutput('[' + days.join(', ') + ']'); 
    SpreadsheetApp.getUi().showModelessDialog(ui, 'Array of Days') 
}