2017-10-10 2 views
0

Google 스프레드 시트가 있으며 시트에서 날짜를 읽으려고합니다. 다음 스크립트는 날짜를 String으로 전달합니다. 그러나 하루는 너무 적습니다.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 스프레드 시트를 만들고 왼쪽 상단 셀에 14.10.2017 날짜를 입력해야합니다. 예제에서 주어진 날짜는 GERMAN 날짜 형식입니다. 로그에

결과는 2017년 10월 13일입니다하지만 구글은 "정상"자바 SimpleDateFormat의

이유를 사용하는 것을 알고 2017년 10월 14일

해야 하는가?

+0

이, 시간대와 함께 문제가 될 수있는 기능에 적절한 시간대를 전달합니다. –

답변

2

국가에서 일광 절약 시간제를 사용하고 있기 때문에 시간대를 하드 코드해서는 안됩니다. 당신은 당신의 코드 대신 또는 SpreadsheetApp.getActive().getSpreadsheetTimeZone()

Session.getScriptTimeZone()를 사용할 수는 아래와 같이 진행됩니다

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

관련 문제