2017-04-18 58 views
0

我有一種方法用於格式化Google Apps腳本中的日期,以便它只讀取MMM dd, yyyy。我試圖用「」替換日期字符串中的所有「 - 」,但使用替換方法僅替換字符串中的第一個「 - 」,其餘部分都沒有。任何想法,爲什麼這是?我怎樣才能取代我的字符串中的所有「 - 」?如何使用replace替換字符串中的所有匹配字符?

這裏是我的代碼:

function formatDate() { 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var dataSheet = ss.getSheets()[0]; 
    var templateSheet = ss.getSheets()[1]; 
    var dataRange = dataSheet.getRange(2, 1, dataSheet.getMaxRows() - 1, 9); 

    var data = dataRange.getValues(); 
    var startRow = 2; // First row of data to process 
    var objects = getRowsData(dataSheet, dataRange); 

    //Format date in column D 
    for(var k=0; k<objects.length; k++){ 
    var column = data[k]; 
    var DateCell = column[4]; 
    var emailSent = column[8]; 


    var column = data[k]; 
    var DateCell = column[4]; 
    var date = new Date(DateCell).toLocaleDateString('en-US',{ 
     day : 'numeric', 
     month : 'short', 
     year : 'numeric' 
     }).split("").join("-").replace(/-/g, ""); 

    var Date1 = dataSheet.getRange(startRow + k, 5); 
    var Date2 = dataSheet.getRange(startRow + k, 6); 
    Date1.setValue(date); 
    Date2.setValue(date); 
    } 
} 

回答

0

這兩個片段的工作。

var str = "testing-this-out"; 
 

 
var beforeEl = document.getElementById("before"); 
 

 
var afterEl = document.getElementById("after"); 
 

 
beforeEl.innerText = "Before: " + str; 
 

 
afterEl.innerText = "After: " + str.replace(/([-])+/g, "");
<p id="before"></p> 
 
<p id="after"></p>

var date = new Date("2017-01-11").toLocaleDateString('en-US',{ 
 
    day : 'numeric', 
 
    month : 'short', 
 
    year : 'numeric' 
 
}).split("").join("-").replace(/([-])/g, ""); 
 

 
document.getElementById("date").innerText = date;
<span id="date"></span>

+0

感謝@Kyle理查德森我想你的建議,由於某種原因,現在它不是格式化的日期都沒有。 – KarmaPimp

+0

這很奇怪,讓我把它展示在一個可運行的片段中 –

+0

我會爲你處理日期字符串,我沒有看到那部分。 –

相關問題