Как насчет этого ответа?
Значения 0.01
и 0.42
являются серийными номерами.Но в этом случае, когда видна каждая ячейка, 0.01
и 0.42
равны 0.00694444444444444
и 0.416666666666667
.Вы также можете подтвердить это.
Если вы хотите преобразовать 0.00694444444444444
и 0.416666666666667
в 00:10:00
и 10:00:00
, соответственно, выполните следующую процедуру.
- Преобразование серийного номера во время Unix.
- Преобразование времени Unix в объект даты.
- Получение значений, таких как
00:10:00
и 10:00:00
.
Пример сценария:
var serialNumbers = [0.00694444444444444, 0.416666666666667];
for (var i = 0; i < serialNumbers.length; i++) {
var unixTime = (serialNumbers[i] - 25569) * 86400 * 1000; // Reference: https://stackoverflow.com/a/6154953
var dateObject = new Date(unixTime);
var value = dateObject.toISOString().split("T")[1].split(".")[0];
console.log(value); // 00:10:00 and 10:00:00
}
Ссылки:
Если это не тот результат, который вам нужен, я прошу прощения.
Редактировать 1:
Когда строка типа "00:10:00", "10:00:00"
преобразуется в серийный номер, как насчет следующего сценария?В этом сценарии поток выглядит следующим образом.
- Преобразование строки в объект даты.
- Преобразование объекта даты в время Unix.
- Преобразование времени Unix в серийный номеркак
0.006944444445252884
и 0.4166666666678793
.
var durations = ["00:10:00", "10:00:00"];
for (var i = 0; i < durations.length; i++) {
var ISO8601 = "1899-12-30T" + durations[i] + "Z";
var dateObject = new Date(ISO8601);
var serialNumber = (dateObject.getTime() / 1000 / 86400) + 25569; // Reference: https://stackoverflow.com/a/6154953
console.log(serialNumber); // 0.006944444445252884 and 0.4166666666678793
}
Редактировать 2: Использование значений из ячеек, полученных с помощью getValues()
00:10:00
и 10:00:00
, помещается в ячейки электронной таблицы. - Значения из вышеприведенных ячеек извлекаются с помощью
getValues()
. - Из найденных значений вы хотите получить серийный номер.
Я могу понять о вашемдополнительный вопросЕсли мое понимание правильное, как насчет этого примера сценария?
Как точка этой ситуации, я думаю, что разницу во времени необходимо учитывать.Поскольку значения, полученные с помощью getValues()
, уже были объектом даты с разницей во времени.Таким образом, в этом случае это смещение необходимо удалить.
В этом примере сценария предполагается, что ячейки "A1" и "A2" имеют 00:10:00
и 10:00:00
в качестве длительности.Этот пример сценария выглядит следующим образом.
- Извлечение значений из ячеек с использованием
getValues()
. - Извлечение разницы во времени.
- Удаление разницы во времени изизвлеченные значения.
- Получить серийный номер.
Пример сценария:
var sheet = SpreadsheetApp.getActiveSheet();
var values = sheet.getRange("A1:A2").getValues();
var offset = (new Date()).getTimezoneOffset(); // Retrieve the time difference.
for (var i = 0; i < values.length; i++) {
var dateObject = new Date(values[i][0].getTime() - (1000 * 60 * offset));
var serialNumber = (dateObject.getTime() / 1000 / 86400) + 25569; // Reference: https://stackoverflow.com/a/6154953
Logger.log(serialNumber) // 0.006944444445252884 and 0.4166666666678793
}