Как объединить дату и время как дату и время в скрипте Google Apps Spreadsheet? - PullRequest
5 голосов
/ 29 октября 2010

У меня есть столбец «Дата» в формате «дд / мм / гггг» и столбец «Время» в формате «ЧЧ: ММ / ММ» в электронной таблице Google App.В скрипте приложения я хочу объединить эти 2 значения в качестве даты и времени.Как я могу это сделать?

Пример: дата: 13.12.2010, время: 16:30. Затем я хочу получить комбинированное значение, например, «13/12/2010 16:30» в видеобъект datetime.

Я пытался анализировать дату и время отдельно, используя функции getYear, getDay JS.И создал новую дату, используя

new Date(year, month, day, hours, minutes)

Но по какой-то причине время «4:30» отображается как полная странная дата, например, 30 ноября 1899 г. 10:30.Я могу точно извлечь год, день и месяц, но не часы и минуты.

1 Ответ

4 голосов
/ 29 октября 2010

Я получил ответ в этой ветке форума Служб Google.

"Во-первых, нет разницы между датой и временем (кроме форматирования), все они являются объектами Date.проблема .. Число, которое является значением даты / времени в электронной таблице, является числом дней с начала эпохи, поэтому «время» фактически является десятичной частью числа. Если вы введете 0 (ноль)) в вашей электронной таблице и затем выберите формат даты и времени, вы увидите, что в текущем часовом поясе электронной таблицы эпоха равна «12/30/1899 0:00:00». То есть в разных электронных таблицах, настроенных с разными часовыми поясами, эпоха можетизменить. И если вы используете одно и то же числовое значение в двух электронных таблицах (например, с помощью ImportRange), вы будете отличаться. Поведение, которое очень странно для меня. Это не всегда было так, но Google, кажется, думал, что это лучше дляпользователь, потому что если кто-то изменит настройки часового пояса электронной таблицы, даты не изменятся визуально, например, если вы введете «1/1/10 14:00» в электронную таблицуЗатем измените часовой пояс на любой другой, дата / время не изменится.В новом часовом поясе все еще будет 14:00.

Теперь, в ГАЗЕ, эпоха "01.01.1970 0:00:00 GMT + 0", теперь имеет значение часовой пояс.Таким образом, эпоха отличается и, скорее всего, часовой пояс тоже.Это делает рабочие даты между GAS и электронной таблицей полным беспорядком.Чтобы проверить эпоху ГАЗА, выполните range.setValue (new Date (0));«

...