2017-10-10 98 views
0

我有一個Google電子表格,並嘗試從表格中讀取日期。以下腳本以字符串形式提供日期。但是這一天太少了。GoogleApps Utilities.formatDate返回錯誤的日期

function testDate() { 
    var selectedSpreadsheetId = PropertiesService.getUserProperties().getProperty("spreadsheetId"); 
    var sheet = SpreadsheetApp.openById(selectedSpreadsheetId); 

    var rows = sheet.getDataRange(); 
    var values = rows.getValues(); 
    var row = values[0]; 
    var test = ""; 
    var test = Utilities.formatDate(new Date(row[0]), "GMT+1", "MM/dd/yyyy");  
    Logger.log("result is: "+test) 
} 

您需要創建Google Spreadsheet並在左上角的單元格中輸入日期14.10.2017。示例中給出的日期是德國日期格式。

日誌中的結果是2017年10月13日,但應該是2017年10月14日

我知道,谷歌使用了「正常」的Java的SimpleDateFormat

爲什麼?

+0

這可能是與時區的問題,通過適當的時區的功能。 –

回答

2

您不應該像您那樣對時區進行硬編碼,因爲您的國家使用夏令時。 您可以在代碼中使用Session.getScriptTimeZone()代替或SpreadsheetApp.getActive().getSpreadsheetTimeZone()

它會象下面這樣:

var test = Utilities.formatDate(new Date(row[0]), Session.getScriptTimeZone(), "MM/dd/yyyy");  
    var test2 = Utilities.formatDate(new Date(row[0]), SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "MM/dd/yyyy");  
    Logger.log("result is: "+test) 
    Logger.log("result2 is: "+test2) 

enter image description here

+0

謝謝!現在它可以工作 – user668338