Почему Date.getMinutes () возвращает 2 для времени 16:00? - PullRequest
1 голос
/ 01 июля 2019

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

Когда в ячейку вводится время, например, 4:00 PM, оно автоматически преобразуется в дату, в данном случае 12/30/1899 16:00:00, а при вызове функции getTheMinutes() возвращается 2 вместо 0.

function getTheMinutes(dateTime){
  return dateTime.getMinutes();
}

Поведение функции отличается, если она используется для самой последней даты, такой как 5/1/2019 16:00:00.

Я хочу, чтобы пользователь мог просто написать время в ячейке, а затем использовать настраиваемую функцию в другой ячейке. Пожалуйста, дайте мне знать ваши мысли.

Ответы [ 2 ]

1 голос
/ 02 июля 2019

Теперь, когда вы указали часовой пояс для своей таблицы, я могу подтвердить то, что @ RobG было выведено почти день назад, а именно то, что Гватемала скорректировала свою разницу относительно UTC. То, что вы подтвердили, рассматривается как две минуты с 5 октября 1918 года.

В частности, корректировка составляла 2 минуты и 4 секунды и действовала с 03:00 того дня:

IANA TZ extract

(Источник IANA Версия 2019b Файл northamerica.)

За эти годы в мире было очень много таких незначительных корректировок (даже между городами одной и той же страны), и корректировки продолжаются, хотя обычно и целый час - между «стандартным» и летним временем. Листы очень правильно поняли, что «нормальная арифметика» «не работает» при таком переходе, и, например, от вчерашнего дня до полудня сегодня, обычно для любого конкретного места разница в 24 часа часто составляет 23 часа или 25 часов. в день, когда часы идут вперед / назад.

И мораль этой истории заключается в том, чтобы остерегаться обязывать Листов принимать, при отсутствии конкретной даты, номер индекса 0, т. Е. Это 30 декабря 1899 г.

0 голосов
/ 02 июля 2019

Я провел некоторое тестирование и обнаружил, что формула дает неправильный результат в любую минуту до 10/5/1918 0:03:00, с этого момента DateTime формула работает, как и ожидалось.

Вот мой лист https://docs.google.com/spreadsheets/d/1psm8_GJYRczO53TILJCOzo0p4GpnS-ooiGWqOJrC8ZU/edit?usp=sharing

Мне нужно сделать проверку даты в моей индивидуальной формуле, чтобы она была полезной.Я не знаю, почему листы Google выбирают эту дату по умолчанию, когда в ячейку вводится только время, думаю, ее следует улучшить.

...