От Ответ Tainake до Получение числа, эквивалентного длительности, с использованием GAS
var serialNumber = (dateObject.getTime() / 1000 / 86400) + 25569; // Reference: https://stackoverflow.com/a/6154953
Более простой способ получитьСерийный номер, соответствующий определенному значению даты ячейки в Google Sheets, используется встроенной функцией Google Sheets
TO_PURE_NUMBER .Это связано с тем, что в Google Sheets и JavaScript, которые используются в Google Apps Script, использовалась другая эпоха (для обозначения серийных номеров использовалась ссылочная дата 0).
С https://developers.google.com/sheets/api/guides/concepts#datetime_serial_numbers
Серийные номера даты / времени
В Google Sheets, как и в большинстве других приложений для работы с электронными таблицами, значения даты / времени обрабатываются как десятичные значения.Это позволяет вам выполнять арифметику над ними в формулах, чтобы вы могли увеличивать дни или недели, добавлять или вычитать две даты / времени и выполнять другие подобные операции.
В Google Sheets используется форма дата эпохи , который обычно используется в электронных таблицах.Целая числовая часть значения (слева от десятичной дроби) считает дни с 30 декабря 1899 г. Дробная часть (справа от десятичной дроби) считает время в виде доли одного дня.Например, 1 января 1900 года в полдень будет 2,5, 2, потому что это два дня после 30 декабря 1899 года, и 0,5, потому что полдень - это полдня.1 февраля 1900 года в 3 часа дня будет 33.625.
Обратите внимание, что в Google Sheets корректно трактуется 1900 год как обычный, а не високосный год.
С другой стороны, использование JavaScript1 января 1970 г. 00:00 UTC в качестве даты эпохи и использование миллисекунд в качестве единицы.
Предупреждение: пользовательский код для преобразования сериализованных чисел из одного в другое должен учитывать, если электронная таблица и GoogleСценарии приложений используют один и тот же часовой пояс или нет.
Связано