2013-09-03 49 views
5

mam linię, która wyznacza aktualną datę i godzinę w komórce:Google Apps Script formatDate użyciu strefy czasowej użytkownika zamiast GMT

sheet.getRange(1,1).setValue(new Date()); 

to mam linia, która tworzy sformatowaną datę na podstawie tej komórki wartość:

var addedDate = sheet.getRange(1,1).getValue(); 
var addedTime = Utilities.formatDate(addedDate, "GMT", "hh:mm a"); 

Powstały addedTime wydaje się być w strefie czasowej GMT i muszę go mieć w strefie czasowej użytkownika. Zwykle będzie to czas wschodni w USA (-0500), ale jeśli po prostu odejmę 5 godzin od czasu, to nie uwzględnia czasu letniego (-0400).

sprawdziłem dokumentację formatDate tutaj: https://developers.google.com/apps-script/reference/utilities/utilities#formatDate(Date,String,String)

który prowadzi do oficjalnej dokumentacji klasy Java SimpleDateFormat tutaj: http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

... ale nie mogę znaleźć listę ważnych stref czasowych tam zastąp GMT przez.

Odpowiedz

15

Można bezpośrednio dostać arkusz Strefa czasowa tak:

var addedDate = sheet.getRange(1,1).getValue(); 
    var addedTime = Utilities.formatDate(addedDate, SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "hh:mm a"); 

Zobacz doc here

ale Apps Script Google korzysta z tych formatów, jeśli chcesz go wybrać samemu:

http://joda-time.sourceforge.net/timezones.html

+0

Aktualizacja: 'Session.getScriptTimeZone()' również pracował dla moich potrzeb. https://developers.google.com/apps-script/reference/base/session – mike

+1

@mike: Jednym z potencjalnych problemów z używaniem 'Session.getScriptTimeZone()' jest wdrożenie skryptu w strefach czasowych. Twój użytkownik końcowy w innym tz skończy na sygnaturach czasowych zsynchronizowanych z tzem skryptu, a nie z tzem arkusza kalkulacyjnego. –