如何计算Google电子表格中的时间增量?


73

我有一个Google电子表格,看起来大致像这样:

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

现在,如果我手动填写一天两次之间的分钟数。是否有一种简单的方法来计算时间增量,并让电子表格为我完成?

Answers:


65

Google添加了一种新的数字格式,称为“持续时间”。将开始和结束字段设置为Format -> Number -> Time,将计算字段设置为Format -> Number -> Duration

完成后,您可以减去字段以得到Stefano Palazzo在其答案中指出的差异。


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)

当然,如果有leap秒,时区更改或事件花费的时间超过24小时,您仍然必须手动调整结果。

一个警告

如果某个事件持续到午夜,例如从23:50到00:10,这将显示为负值时间!

为了更好地处理这些事件,您可以输入“ 24:10”,也可以将事件分成两个部分。

更好的方法

尽管输入数据有些困难,但最可靠的方法是将beinning和end字段标记为“ Date Time”,将delta字段标记为“ Hours”,如下所示:

Beginning          End                  Delta
8/1/2013 0:00:00   8/2/2013 12:30:00    36:30:00

这似乎不再起作用。我认为您需要选择格式>数字>小时(与时间)。当我尝试减去简单的时差时,我得到一个非常奇数的十进制数。
伊利亚·林恩

@ElijahLynn这个奇数是天数。将时间乘以24和60可得出分钟数,
Jacob Jan Tuinstra 2013年

1
如果某人想在一个单元格中获取日期和时间,则可以通过加法来合并:A1 + B1。
wzbozon

9

如果在中添加以下公式D2,则分钟将自动计算:

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

讲解

时间之间的差异(以十进制格式表示)以天为单位。因此,将24乘以60将得到数分钟

备注

有一个先决条件:D列需要设置为“正常”格式。

查看我创建的示例文件:增量时间


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 Spreadsheets中计算时间增量的最简单方法。格式化包含公式的单元格,如下所示:

公式单元格格式

格式>数字>更多格式>更多日期和时间格式,删除“秒”和:。然后,格式化结束时间和开始时间单元是这样的:h:mm am/pm

输入时间单元格格式

使用公式=abs(end time - start time)。这为您提供了一个绝对值,因此不会出现负的时间值。



4

如果您希望以天为单位测量时间增量,请使用

=DAYS(end_date, start_date)

确实如此。但是,我来这里的目的是找出几天之间的差异(后来在其他地方找到它时又回来给出答案),这使我得出这样的假设:我的答案可以使相同情况下的其他人受益。由于这是一个相关主题,因此我认为不值得提出一个新问题,特别是因为标题未指定度量单位。但这只是我的理由。你怎么看?
e18r

@pnuts如果您找到了一个有用的答案,但稍微超出了问题的范围,则也可以只编辑问题(在这种情况下是几分钟,几小时或几天或任何时间)。我只是一个人,这个问题有100,000次浏览。
Stefano Palazzo,


1

在Google表格中,我使用了以下公式

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

给我十进制小时的差异。




-1

对于我的个人应用:

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

这对我有用:将
=if(B4-A4<0,(B4+C4+1)-(A4+C4),B4-A4);单元格格式设置为Format \ Time \ Duration。

对于真实条件:受Stefano Palazzo评论启发的配方。


ps日期与StartTime相关联,即使StopTime转到第二天也是如此,这就是为什么我将+1添加到EndTime的原因。如果您的EndTime滚动超过一天,则+1显然将不再起作用。
鲍勃·K

-2

我同意时间增量是以天为单位表示的,因此要回到分钟数,您应该将差值乘以1440,即24 x 60。

我今天遇到了这个问题,以为我会提到在Google Docs电子表格中获取当前时间的另一种简单方法是CONTROL:在单元格中输入。您可以将其用于“开始时间”和“结束时间”单元格。

如果您需要在单元格中输入当前日期,则可以通过 CONTROL;


1
感谢您的分享,但这并不是问题的答案。更多游览,在我们的帮助中心。欢迎使用Web应用程序!
Jacob Jan Tuinstra 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.