Как рассчитать разницу времени в моих таблицах Google?

73

У меня есть таблица Google, которая выглядит примерно так:

 Date        | Start time  | End time    | Minutes
 ------------+-------------+-------------+-----------
 1/11/2012   | 11:39       | 12:41       | ?!
 ------------+-------------+-------------+-----------
             |             |             | 

Прямо сейчас, если я вручную укажу количество минут между двумя временами дня. Есть ли простой способ рассчитать дельту времени и сделать это для меня в электронной таблице?

Стефано Палаццо
источник

Ответы:

65

Google добавил новый числовой формат под названием «Продолжительность». Установите начальное и конечное поля, Format -> Number -> Timeа поле вычисления -Format -> Number -> Duration

Как только вы это сделаете, вы можете вычесть поля, чтобы получить разницу, как отметил Стефано Палаццо в своем ответе.

Джейкоб Халс
источник
51

Да, если ваши поля времени правильно отформатированы (нажмите Формат → Число → Время ), вы можете просто добавить и вычесть время:

=C2-B2

или же

21:58:00 - 20:44:00 = 1:14:00

Это даст вам время дельта как HH:MM:SS. И если вы хотите , чтобы вычислить количество минут, вы можете использовать Hour(), Minute()и Second()функцию на этом поле:

=(Hour(D2) * 60) + Minute(D2) + (Second(D2) / 60)

Конечно, если есть високосные секунды, изменения часового пояса или если событие занимает больше 24 часов, вам все равно придется корректировать результаты вручную.

Предупреждение

Если одно событие продлится после полуночи, скажем, с 23:50 до 00:10, это будет отрицательное время!

Чтобы эти события обрабатывались «правильно», вы можете либо поставить «24:10», либо разбить событие на две части.

Лучший способ

Несмотря на то, что вводить данные немного сложнее, самый надежный способ сделать это - пометить поле начала и окончания как «Дата и время», а поле дельты - как «Часы», которое будет выглядеть так:

Beginning          End                  Delta
8/1/2013 0:00:00   8/2/2013 12:30:00    36:30:00
Стефано Палаццо
источник
Это больше не работает. Я думаю, что вам нужно выбрать Формат> Число> Часы (против времени). Я получаю очень странное десятичное число, когда пытаюсь вычесть простую почасовую разницу.
Элайджа Линн
@ElijahLynn это нечетное число - количество дней. Умножение на 24 и 60 даст вам количество минут,
Джейкоб Ян Туинстра
1
Если кто-то хочет получить дату и время в одной ячейке, он может объединиться, просто добавив: A1 + B1.
wzbozon
9

Если вы добавите следующую формулу в D2, то минуты будут рассчитаны автоматически:

формула

=ARRAYFORMULA(IF(ISBLANK(B2:B)=FALSE,((C2:C-B2:B)*24*60),""))

Разъяснения

Разница между временами в десятичном формате выражается в днях. Следовательно, умножение на время 24 на 60 приведет к минутам.

замечание

Есть одно предварительное условие: столбец D должен быть отформатирован как «нормальный».

пример

Смотрите пример файла, который я создал: Delta Time

Джейкоб Ян Туинстра
источник
7

Для более надежного решения мы используем пользовательскую функцию.

1. Добавление пользовательской функции

Использование редактора сценариев (следуйте инструкциям в https://developers.google.com/apps-script/execution_custom_functions ) - пишет:

function toEpoch (indate) {
  return indate.getTime();
}

2. Добавить формуляр

Затем в клетке пишет:

=(toEpoch(C2)-toEpoch(B2)) / 60*1000

Который конвертирует разницу в миллисекундах эпохи в минуты.

отрывочный
источник
... Я сделал это, чтобы убедиться, что конвертируем и конвертируем его уже в секунды (от миллисекунд): function toEpoch (data) { return new Date(data) / 1000; }
user1278519
7

Я провел много экспериментов. Это самый простой способ вычислить разницу времени в таблицах Google. Отформатируйте ячейку, содержащую формулу, следующим образом:

Форматирование ячейки формулы

Формат> Число> Дополнительные форматы> Дополнительные форматы даты и времени , удалите «второй» и :. Затем отформатируйте время окончания и время начала клетки , как это: h:mm am/pm.

Формат ввода ячейки времени

Используйте формулу =abs(end time - start time). Это дает вам абсолютное значение, поэтому не будет отрицательных значений времени.

Натали Ки
источник
6

Намного проще: посмотрите на этот ответ на форуме Excel:

B2: 23:00
C2: 1:37
D2: =C2-B2+(B2>C2)

Почему это работает, время - это доля дня, сравнение B2> C2 возвращает True (1) или False (0), если добавлено true 1 день (24 часа).

Том Элвуд
источник
4

Если вы хотите, чтобы ваша дельта времени измерялась в днях, используйте

=DAYS(end_date, start_date)
e18r
источник
Это правда. Тем не менее, я пришел сюда, пытаясь найти разницу в днях (и вернулся позже, чтобы дать ответ, когда я нашел его в другом месте), что заставляет меня предположить, что мой ответ мог бы принести пользу другим в той же ситуации. Поскольку это такая связанная тема, я не думал, что стоит открывать новый вопрос, тем более что в названии не указана единица измерения. Но это были только мои рассуждения. Как вы думаете?
17
@pnuts Если вы найдете ответ, который полезен, но немного выходит за рамки вопроса, вы также можете просто отредактировать вопрос (в данном случае сказать минуты, часы или дни или что-то еще). Я всего лишь один парень, вопрос имеет 100 000 просмотров.
Стефано Палаццо
3

Вы также можете попробовать TIMEVALUE().

В приведенном выше случае решение будет:

(TIMEVALUE(End Time) - TIMEVALUE(Start Time))*24*60 даст вам разницу во времени в МИНУТАХ.

Суджит Равиндран
источник
Добро пожаловать, Суджит! Хороший ответ, я добавил форматирование, чтобы его было легче читать.
Видар С. Рамдал
1

В Google Sheets я использовал следующую формулу

=Round((hour(A2-A1)*60 + minute(A2-A1))/60,2)

чтобы дать мне разницу в десятичных часах.

Вибху
источник
0

Я использую эту формулу:

=HOUR(C2-B2)*60+MINUTE(C2-B2)

тогда

Format -> Number -> More Formats -> Custom number format -> #,##0
Рахмат Ихсан
источник
-1

=(C2-B1)*1440 затем установите формат «Обычный текст».

Эрик
источник
-1

Для моего личного заявления:

StartTime (columnA)| EndTime(Column B)| Date (Column C)

Это сработало для меня:
=if(B4-A4<0,(B4+C4+1)-(A4+C4),B4-A4);Формат ячейки как Формат \ Время \ Продолжительность.

Для истинного состояния: формула, вдохновленная комментариями Стефано Палаццо.

Боб К
источник
ps date связана с StartTime, даже если StopTime перенесен на следующий день, поэтому я добавил +1 к дате для EndTime. Если ваш EndTime продлевается более чем на один день, +1, очевидно, больше не будет работать.
Боб К
-2

Я согласен, что дельта времени выражается в днях, поэтому, чтобы вернуться к минутам, нужно умножить разницу на 1440, что составляет 24 x 60.

У меня была эта проблема сегодня, и я подумал, что упомяну другой простой способ узнать текущее время в электронной таблице Google Docs - ввести CONTROL:ячейку. Вы можете использовать это как для начальной, так и для конечной ячейки.

Если вам нужно ввести текущую дату в ячейку, то это достигается CONTROL;

Барри Велфорд
источник
1
Спасибо, что поделились, но это не ответ на вопрос. Подробнее тура , что в нашем справочном центре . Добро пожаловать в веб-приложения!
Джейкоб Ян Туинстра