Як обчислити дельту часу в електронних таблицях 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). Це дає вам абсолютне значення, тому негативних часових значень не буде.



4

Якщо ви хочете, щоб ваш дельти часу вимірювався днями, використовуйте

=DAYS(end_date, start_date)

Це правда. Однак я прийшов сюди, намагаючись знайти різницю в днях (і повернувся пізніше, щоб дати відповідь, коли я знайшов її в іншому місці), що призводить мене до припущення, що моя відповідь може принести користь іншим у моїй самій ситуації. Оскільки це така пов'язана тема, я не вважав, що варто відкривати нове запитання, тим більше, що в заголовку не визначено одиницю виміру. Але це були лише мої міркування. Що ти думаєш?
e18r

@pnuts Якщо ви знайдете відповідь, яка є корисною, але трохи виходить за рамки питання, ви також можете просто відредагувати це питання (у цьому випадку сказати хвилини, години чи дні чи що завгодно). Я просто один хлопець, питання має 100 000 переглядів.
Стефано Палацо

3

Ви можете також спробувати TIMEVALUE().

У наведеному вище випадку рішенням було б:

(TIMEVALUE(End Time) - TIMEVALUE(Start Time))*24*60 дасть вам різницю в часі в MINUTES.


Ласкаво просимо, Sujeeth! Хороша відповідь, я додав деякі формати, щоб полегшити читання.
Відар С. Рамдал

1

У Google Таблицях я використав формулу, як показано нижче

=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 дата пов’язана з StartTime, навіть якщо StopTime перейшов на наступний день, тому я додав +1 до дати для EndTime. Якщо ваш EndTime згортається більше ніж на день, +1, очевидно, більше не працюватиме.
Боб К

-2

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

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

Якщо вам потрібно ввести поточну дату в комірці, то це досягається шляхом CONTROL;


1
Дякуємо, що поділилися, але це не відповідь на питання. Детальніше про екскурсію читайте в нашому довідковому центрі . Ласкаво просимо до веб-додатків !!
Яків Ян Туінстра
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.