getRange.getValue возвращает неверную дату из листов Google

var sheetdate = activeSheet.getRange(x, y).getValue() Я использовал эту строку, чтобы прочитать дату из таблиц Google. Дата в листах - 01.02.2021. Но Sheetdate возвращает значение Вс, 31 января, 13:30:00 GMT-05: 00 2021. Фактический выход должен быть 1 февраля, понедельник, 17:35:00 GMT 05:30.


person Harikrishna Thummalapelly    schedule 01.02.2021    source источник
comment
Кажется, проблема с часовым поясом. Вы пытались преобразовать значение (возвращенное как часовой пояс по Гринвичу) в свой часовой пояс)?   -  person Sourcerer    schedule 01.02.2021


Ответы (1)


Это проблема с часовым поясом, как упоминал Sourcerer.

Есть много возможных ответов на этот вопрос, но я предпочитаю этот, форматирование даты с использованием Utilities, так как вы можете контролировать свой вывод:

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();
  date = sheet.getRange(1, 1).getValue()
  Logger.log(date);
  Logger.log(SpreadsheetApp.getActive().getSpreadsheetTimeZone());
  Logger.log(Utilities.formatDate(date, SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "E MMM dd HH:mm:ss z yyyy"));
}

Для форматирования тот, который я использовал выше "E MMM dd HH:mm:ss z yyyy", пытается имитировать вывод даты по умолчанию. См. Ссылку ниже и не стесняйтесь изменять в зависимости от того, что вам нужно вывести на дату.

Ссылка:

person NaziA    schedule 01.02.2021