Как объединить дату и время как дату и время в скрипте Google Apps Spreadsheet?
У меня есть столбец "Дата" в формате "дд / мм / гггг" и столбец "Время" в формате "ЧЧ: ММ AM/PM" в электронной таблице Google App. В скрипте приложения я хочу объединить эти 2 значения в качестве даты и времени. Как я могу это сделать?
Пример: дата: 13.12.2010, время: 16:30. Затем я хочу получить комбинированное значение, например, "13/12/2010 16:30" в качестве объекта даты и времени.
Я попытался разобрать дату и время отдельно, используя функции getYear, getDay JS. И создал новую дату, используя
new Date(year, month, day, hours, minutes)
Но по какой-то причине время "4:30" отображается как полная странная дата, например, 30 ноября 1899 г., 10:30. Я могу точно извлечь год, день и месяц, но не часы и минуты.
1 ответ
Я получил ответ в этой ветке форума Служб Google.
"Во-первых, нет никакой разницы между датой и временем (кроме форматирования), все они являются объектами Date. Теперь к проблеме. Число, которое является значением даты / времени в электронной таблице, представляет собой число дней с момента "эпоха", поэтому "время" на самом деле является десятичной частью числа. Если вы введете 0 (ноль) в своей электронной таблице, а затем выберите формат даты и времени, вы увидите, что эпоха "30/18/1899 0:00:00"в текущем часовом поясе электронной таблицы. То есть в разных электронных таблицах, настроенных с разными часовыми поясами, эпоха может измениться. И если вы используете одно и то же числовое значение в двух электронных таблицах (например, с помощью ImportRange), вы будете отличаться. Поведение это очень странно для меня. Это не всегда было так, но Google, кажется, думал, что это лучше для пользователя, потому что если кто-то изменит настройки часового пояса электронной таблицы, даты не изменятся визуально, например, если вы введете "1/1/10 14:00"в электронной таблице, а затем изменить часовой пояс на любой другой, дата / время не изменится. быть 14:00 в новом часовом поясе.
Теперь в GAS эпоха "01.01.1970 0:00:00 GMT+0", теперь имеет значение часовой пояс. Таким образом, эпоха отличается и, скорее всего, часовой пояс тоже. Это делает рабочие даты между GAS и электронной таблицей полным беспорядком. Чтобы проверить эпоху ГАЗА, выполните range.setValue( new Date(0)); "