5

У меня есть строка, которая устанавливает текущую дату и время в клетке:приложение Google Script FormatDate используя часовой пояс пользователя вместо GMT

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

Тогда я линия, которая создает отформатированную дату на основе этого клетку значение:

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

в результате addedTime, кажется, в часовом поясе GMT, и мне нужно, чтобы быть в часовом поясе пользователя. Обычно это будет Восточное время США (-0500), но если я просто вычшу 5 часов с момента, то это не учитывает летнее время (-0400).

Я проверил документацию для FormatDate здесь: https://developers.google.com/apps-script/reference/utilities/utilities#formatDate(Date,String,String)

, который связывается с официальной документации класса Java SimpleDateFormat здесь: http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

... но я не могу найти список действительных часовых поясов там замените GMT.

ответ

15

Вы можете непосредственно получить таблицу часовых поясов, как это:

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

Посмотреть doc here

но Google Apps Script использует эти форматы, если вы хотите выбрать сами:

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

+0

Обновление: 'Session.getScriptTimeZone()' также работал для моих нужд. https://developers.google.com/apps-script/reference/base/session – mike

+1

@mike: Одна из потенциальных проблем с использованием 'Session.getScriptTimeZone()' заключается в том, что вы развертываете скрипт в часовых поясах. Ваш конечный пользователь в другом tz будет иметь временные метки, синхронизированные с tz скрипта, а не tz таблицы. –

 Смежные вопросы

  • Нет связанных вопросов^_^