Date | Start time | End time | Minutes
------------+-------------+-------------+-----------
1/11/2012 | 11:39 | 12:41 | ?!
------------+-------------+-------------+-----------
| | |
现在,如果我手动填写一天两次之间的分钟数。是否有一种简单的方法来计算时间增量并让电子表格为我完成?
#1 楼
Google添加了一种新的数字格式,称为“持续时间”。首先将开始和结束字段的格式设置为Format -> Number -> DateTime
或Format -> Number -> Time
,将计算字段的格式设置为Format -> Number -> Duration
完成后,您可以减去这些字段以得到Stefano Palazzo在其答案中指出的差异。
#2 楼
是的,如果您的时间字段格式正确(单击格式→数字→时间),则可以添加和减去时间:=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”或将事件分为两个。
更好的方法
尽管输入数据有些困难,但最可靠的方法是将beinning和end字段标记为“ Date Time”,将delta字段标记为“ Hours”,如下所示:
Beginning End Delta
8/1/2013 0:00:00 8/2/2013 12:30:00 36:30:00
评论
这似乎不再起作用。我认为您需要选择格式>数字>小时(与时间)。当我尝试减去简单的时差时,我得到一个非常奇数的十进制数。
–伊利亚·林恩
13年7月5日在17:27
@ElijahLynn这个奇数是天数。将时间乘以24和60可得出分钟数,
–雅各布·扬·图恩斯特拉(Jacob Jan Tuinstra)
13年7月21日在12:36
如果某人想在一个单元格中获取日期和时间,则可以通过加法来合并:A1 + B1。
–丹尼斯·库特鲁贝(Denis Kutlubay)
16年8月3日,9:02
“警告”很重要。我没有看到其他要声明的地方,但是正在寻找它。对我来说,这不是警告,而是处理两次之间差异的重要部分。没有先声明其顺序是很自然的。
–德克·舒马赫(Dirk Schumacher)
3月28日8:46
#3 楼
如果在D2
中添加以下公式,则分钟将自动计算:公式
=ARRAYFORMULA(IF(ISBLANK(B2:B)=FALSE,((C2:C-B2:B)*24*60),""))
解释了>时间之间的差异(以十进制格式表示)以天为单位。因此,将时间乘以24乘以60将产生分钟。
备注
有一个先决条件:D列需要格式化为'normal'。
示例
查看我创建的示例文件:增量时间
#4 楼
我做了很多实验。这是在Google Spreadsheets中计算时间增量的最简单方法。格式化包含公式的单元格,如下所示:Format> Number> More Formats>更多日期和时间格式,删除“ second”和
:
。然后,格式化“结束时间”和“开始时间”像这样:h:mm am/pm
。 使用公式
=abs(end time - start time)
。这为您提供了绝对值,因此不会出现负的时间值。 #5 楼
如此简单:在Excel论坛中查看以下答案:B2: 23:00
C2: 1:37
D2: =C2-B2+(B2>C2)
为什么它起作用,时间只是一天的一小部分,比较B2> C2如果添加true 1天(24小时),则返回True(1)或False(0)。
评论
我正要添加此答案,但是注意到它已经添加了。做得好。这绝对是解决Stefano提出的问题的最简单方法。同样重要的是要指出D2单元格的格式必须为[m]:必须选择D2单元格,然后单击“格式”>“数字”>“更多格式”>“自定义数字格式”,然后添加[m]并单击“应用”。
– Yuri Sucupira
19/12/27在4:44
#6 楼
为了获得更强大的解决方案,我们使用了自定义函数。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
17-4-23在18:06
#7 楼
如果您希望以天为单位测量时间增量,请使用=DAYS(end_date, start_date)
评论
确实如此。但是,我来这里的目的是找出几天之间的差异(后来在其他地方找到它时又回来给出答案),这使我得出这样的假设:我的答案可以使相同情况下的其他人受益。由于这是一个相关主题,因此我认为不值得提出一个新问题,尤其是因为标题未指定度量单位。但这只是我的理由。你怎么看?
– e18r
17-10-7在20:37
@pnuts如果您找到了有用的答案,但是稍微超出了问题的范围,则也可以只编辑问题(在这种情况下,是几分钟,几小时或几天,或者其他任何内容)。我只是一个人,这个问题有100,000次浏览。
– Stefano Palazzo
17-10-9在15:07
#8 楼
您也可以尝试使用TIMEVALUE()
。在上述情况下,解决方案是:
(TIMEVALUE(End Time) - TIMEVALUE(Start Time))*24*60
将为您提供MINUTES的时差。评论
欢迎Sujeeth!好的答案,我添加了一些格式使其更易于阅读。
– Vidar S. Ramdal
18-10-16在13:18
#9 楼
免责声明:我要发布的答案不能完全回答提问者的问题,因为这是在Google上获得第一个结果时需要的答案,我想帮助下一个与我有相同问题的人。 br />这可能不是最漂亮的公式,但结果却是我能管理的最漂亮的公式。假设
F2
单元格包含日期,这是我用来阐明今天和前一阵子之间的区别的Google表格公式:=IF(DATEDIF(F2,TODAY(),"Y")>0,DATEDIF(F2,TODAY(),"Y")&" year"&IF(DATEDIF(F2,TODAY(),"Y")=1,", ","s, ")&DATEDIF(F2,TODAY(),"YM")&" month"&IF(DATEDIF(F2,TODAY(),"YM")=1,", ","s, "),IF(DATEDIF(F2,TODAY(),"YM")>0,DATEDIF(F2,TODAY(),"YM")&" month"&IF(DATEDIF(F2,TODAY(),"YM")=1,", ","s, "),""))&DATEDIF(F2,TODAY(),"MD")&" day"&IF(DATEDIF(F2,TODAY(),"MD")=1,"","s")
假设今天是2020-03-09,此公式的示例结果如下:
column F | column G
--------------------------------------
2020-02-14 | 24 days
2019-10-08 | 5 months, 1 day
2019-06-14 | 8 months, 24 days
2019-04-05 | 11 months, 4 days
2019-03-09 | 1 year, 0 months, 0 days
2019-02-01 | 1 year, 1 month, 8 days
2018-12-07 | 1 year, 3 months, 2 days
2018-03-04 | 2 years, 0 months, 5 days
2018-01-09 | 2 years, 2 months, 0 days
我确保:
在所有单位上均已正确处理
如果全部显示0
,则显示最高幅值的时间单位被隐藏
,即使较高幅值的时间单位大于0,即使显示0,也将隐藏最高幅值的时间单位。
如果希望公式末尾说“前”,可以在公式末尾添加
&" ago"
。#10 楼
在Google表格中,我使用了以下公式=Round((hour(A2-A1)*60 + minute(A2-A1))/60,2)
给我十进制小时数的差异。
#11 楼
我使用这个公式:=HOUR(C2-B2)*60+MINUTE(C2-B2)
然后
Format -> Number -> More Formats -> Custom number format -> #,##0
#12 楼
=(C2-B1)*1440
然后将格式设置为“纯文本”。#13 楼
对于我的个人应用程序: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。即使StopTime移到了第二天,日期也与StartTime关联,这就是为什么我将+1添加到EndTime的日期。如果您的EndTime滚动超过一天,则+1显然将不再起作用。
– Bob K
17年1月10日在4:41
#14 楼
我同意时间增量是以天为单位表示的,因此要回到分钟数,您应该将差值乘以1440,即24 x 60。在Google文档电子表格中获取当前时间的另一种简单方法是在单元格中输入CONTROL :。您可以将其用于“开始时间”和“结束时间”单元格。如果需要在单元格中输入当前日期,则可以通过CONTROL来实现;
评论
感谢您的分享,但这并不是问题的答案。在我们的帮助中心中了解更多内容。欢迎使用Web应用程序!
–雅各布·扬·图恩斯特拉(Jacob Jan Tuinstra)
13年11月6日在6:13
评论
微小的添加,开始和结束字段也可以是DateTime(格式>数字>日期时间),这也可以使用。
–贝坦·库尔特(Beytan Kurt)
6月14日16:29
@BeytanKurt那不是我那里吗?
–雅各布·霍尔斯(Jacob Hulse)
10月12日19:18
似乎答案已被编辑为包括我所说的@jacob
–贝坦·库尔特(Beytan Kurt)
10月13日14:54
@BeytanKurt是的,在您指出之后,是我的!大声笑
–雅各布·霍尔斯(Jacob Hulse)
10月13日22:09