Синтаксический анализ даты в приложении Google Google - PullRequest
0 голосов
/ 24 января 2020
var ss = SpreadsheetApp.getActiveSpreadsheet();
var dataa = ss.getSheetByName("123").getRange("C1").getValue();
// C1 => 18:34:00.000
Logger.log(Utilities.formatDate(dataa, "GMT", "HH:mm"));
//Log =>[20-01-24 17:31:02:475 JST] 10:06

Я привожу дату электронной таблицы.

Она была выражена как дата сценария приложения Google.

Однако результаты отличаются.

Почему это так?

enter image description here

1 Ответ

2 голосов
/ 24 января 2020

Проблема, с которой вы столкнулись, связана с .getValue(), который преобразует данные в ячейке в то, что Google считает. Чтобы получить значение в точности так, как вы видите его в электронной таблице, используйте .getDisplayValue().

Предполагая, что значения в столбце C всегда имеют одинаковый формат (ЧЧ: мм: ss), вы можете просто разделить значение, используя двоеточие в качестве разделителя, а затем сравнить эти значения с вашим контролем. (Взгляните на различные Дата методы для сравнения с часами , минутами и др. c.)

var range = ss.getSheetByName("Sheet1").getRange("C1"); // 18:34:00
var displayValue = range.getDisplayValue();
var displayValueParts = displayValue.split(":");
var hour = displayValueParts[0];
var minutes = displayValueParts[1];
var seconds = displayValueParts[2]

Примечание здесь, просто используя .getValue(), Google интерпретирует значение в C1 как дату.

var range = ss.getSheetByName("Sheet1").getRange("C1"); // 18:34:00
var value = range.getValue();
Logger.log(value); // Sat Dec 30 11:51:56 GMT+00:00 1899
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...