如何在Microsoft Excel中获取两个日期之间的分钟差异?

16

我正在使用Excel进行一些工作,但遇到了一些问题。我处理的仪器保存了测量的日期和时间,我可以按照以下格式将这些数据读入Excel:

   A           B
1 Date:      Time:
2 12/11/12   2:36:25
3 12/12/12   1:46:14

我希望做的是找到两个日期/时间戳之间的分钟差,以便可以从数据中创建衰减曲线。因此,在Excel中,我希望制作这个(如果此示例中的分钟数有误,则我只是快速手算出来的):

   A           B                 C
1 Date:      Time:       Time Elapsed (Minutes)
2 12/11/12   2:36:25               -
3 12/12/12   1:46:14            1436.82

我已经找了一些方法来计算时间差,但它们总是假定日期相同。我把测量之间的时间间隔夸大了一些,但日历上的翻滚仍然让我苦恼。如果你有什么建议或提示,请告诉我。即使我能以小时或天的小数格式找到日期和时间之间的差异,我也可以乘以一个常数来得到答案。请注意,我有编程和Excel的经验,但请详细解释。我有时会被步骤迷惑。


请注意,您的问题实际上不是一个编程问题,而是一个数学问题...在计算中添加日期并不是一个真正的问题,只需取两个时间之间的差值并将它们相加,即使 time2<time1,您也应该将经过的时间作为 date2>date1 - K_B
5个回答

24

时间和日期都以数字形式存储,采用浮点数格式(实际上是浮点数)。日期使用整数表示,而时间则使用小数部分表示(1/24 = 1小时,1/24*1/60表示1分钟,等等)。

日期时间差的计算方式为:

date2-date1

time2-time1

将会在几天内给你答案,现在乘以24(每天的小时数)再乘以60(每小时的分钟数),你就得到了:

time elapsed = ((date2-date1) + (time2-time1)) * 24 * 60
或者
C3 = ((A3-A2)+(B3-B2))*24*60

2
如果你执行 "=datetime2-datetime1",你还需要注意他想要将格式更改为:"[hh]:mm"。对于他的图表,也可以使用 "=TEXT(datetime2-datetime1,"[hh]:mm:ss")"。 - Offler
@Offler:好的,他并没有,看一下他问题中的示例,它显示了总分钟数。请完整阅读问题和答案... - K_B
那个像冠军一样运行。我知道这一定有一个简单的解决方案,我尝试了类似的方法,但还不够好。感谢您帮助我节省了很多时间! - Linux Rules
请注意,Excel中的浮点日期存储可能会导致长期的舍入误差(在迭代过程中传递的误差将在时间组件(秒甚至分钟)中达到显著水平,从而可能导致错误的日期(带有午夜左右的时间)和时间!! - K_B

4
为了更好地理解,Excel将日期和时间存储为“序列号”。此处提供参考资料。我们建议您采用以下方法:合并日期和时间,然后进行计算差值。这样就不会有隔天或其他问题。请参考图片中的计算方式。您可以将总分钟单元格设置为常规格式或数字格式。以下是相关文章:MS EXCEL文章:计算两个时间之间的差异本文的示例

将日期与时间合并,然后进行差异计算。这样就不会在第二天或其他任何情况下出现问题。在数学中,操作+和-的顺序并不重要(它们实际上是相同的),因此首先添加日期和时间或首先进行差异计算都是一样的... - K_B
K_B,我并不反对你的答案,但是帮助别人寻找其他可能的解决方案有什么坏处呢?这是关于分享的。 - bonCodigo
你提到在日期和时间合并时可能会出现“问题”,例如跨越到第二天等情况,但我要指出这根本不是问题。你提出了一个无关紧要的问题!这是我与你分享的看法... - K_B
如果屏幕截图中的公式包含在文本中,那么这个答案会更好。 - Liam

0

这个的简洁方法是:

=MOD(end-start,1)*24

其中,开始时间和结束时间的格式为“09:00”和“17:00”

午夜班
如果开始时间和结束时间在同一天,则MOD函数不会影响任何内容。如果结束时间跨越午夜,并且结束时间早于开始时间(比如你从晚上11点开始工作,到凌晨1点结束,结果是2小时),则MOD函数会翻转差值的符号。

请注意,此公式将两个时间(实际上是两个日期)之间的差异计算为十进制值。如果您想将结果显示为时间,请将其显示为时间(ctrl+shift+2)。

https://exceljet.net/formula/time-difference-in-hours-as-decimal-value


0
  1. 使用days360函数=days360(dateA,dateB)获取两个日期之间的n天
  2. 使用此公式找到以timeA为参考的分钟数=(timeB-$timeA+n*"24:00")*1440
  3. 完成,您现在可以得到两个时间和日期之间的分钟数了

-2

我认为=TEXT(<cellA> - <cellB>; "[h]:mm:ss")是一个更简洁的答案。这样,您可以将列设置为日期时间格式。


只有当时间差在一天之内时才有帮助! - Pugazh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接