【问题标题】:Microsoft Excel Datetime differenceMicrosoft Excel 日期时间差异
【发布时间】:2015-09-09 11:00:44
【问题描述】:

我有这张表,我试图找出两个日期之间的差异 在格式中。我有三列日期格式为 28/01/2015 21:43

下面是我的表,

Created date    Start date  end date    time to start   time to start from create date  time to finish from created date
11/02/2015 12:46    11/02/2015 16:15    13/02/2015 17:21    00 days 03:29:07    02 days 01:06:27    02 days 04:35:34
17/11/2014 15:17    27/11/2014 21:43    20/01/2015 19:21    10 days 06:26:52    22 days 21:37:17    04 days 04:04:09
22/12/2014 09:38    22/12/2014 09:49    16/01/2015 04:02    00 days 00:11:31    24 days 18:12:48    24 days 18:24:19
25/11/2014 10:58    25/11/2014 11:35    13/01/2015 17:35    00 days 00:37:04    18 days 06:00:39    18 days 06:37:43
13/01/2015 09:03    13/01/2015 09:42    13/01/2015 12:27    00 days 00:39:37    00 days 02:44:59    00 days 03:24:36

我使用以下公式计算了日期之间的差异(最后三列),

=TEXT(C1-B1,"dd"" days ""hh:mm:ss") 

这在大多数情况下都有效,但不适用于开始日期在 2014 年,结束日期在 2015 年的那些。它完全不考虑 12 月,它只计算到 11 月的天数,然后跳到 1 月。 (如第 2 行和第 4 行所示)

有没有办法阻止这种情况?

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    您正在将不属于同一字符串的格式掩码混合在一起。您正在使用 dd 日期作为应该是 0 the-number-of-days-between-two-dates。您正在失去 12 月,因为 49 天,因为 -day-of-the-month 实际上是下个月的第 18th 天。

    1899 年 12 月 31 日之后的每一天的日期都是 1。时间是一天的小数部分。今天正好是 42256,今天中午是 42256.5。

    INT function 可以提取日期时间的日期部分,MOD function 可以为时间做同样的事情。

    =TEXT(INT(C2)-INT(B2)-(MOD(C2, 1)<MOD(B2, 1)),"0 \d\a\y\s ")&TEXT(MOD(C2, 1)-MOD(B2, 1)+(MOD(C2, 1)<MOD(B2, 1)),"hh:mm:ss")
    

    您不能在同一格式掩码中同时包含 0hh:mm:ss 中的任何时间格式掩码。将天数作为整数,时间作为常规时间值构建两个,然后将两个字符串连接起来是最好的选择。

    此外,因为你不能有负时间,如果时间减法将是负数,你需要在结果中添加一天(即 1)。必须对日期减法进行相同的调整。

          

    【讨论】:

    • 其实这样做不是更容易 =INT(C2-B2)& "days "& TEXT(MOD(C2-B2,1),"hh:mm:ss") ?
    • @TomSharpe - 是的!这要简单得多。我从某条路线开始并获得了隧道视野,因为我必须应用越来越多的“补丁”才能使所有条件都起作用。我应该退后一步,从整体上看待问题,而不是涵盖个别情况。运气好的话,至少我的解释可能很清楚。
    • 即使是我们当中最优秀的人,有时也会有狭隘的视野。还意识到您不需要使用 MOD 功能,因为格式会忽略天数所以只留下 =INT(C2-B2)& " days "& TEXT(C2-B2,"hh:mm:ss")
    【解决方案2】:

    首先,第4列的标题似乎应该是“从开始日期开始的时间”,而不是“从创建日期开始的时间”

    您正在应用的公式将两个日期之间的差作为序列号给出,其中整数部分表示日期差,小数部分表示时间差,然后TEXT 公式格式化该序列号仅采用天数和时间。 例如在数据的第二行(不包括标题)“从开始日期到完成的时间”(导致“开始日期”减去“创建日期”的差异)53.9008912037025,日期格式类似于22/02/1900 21:37:17,那么TEXT 公式只需要天数和时间,从而导致22 days 21:37:17

    现在要获得您期望的结果,我们需要从时间中拆分天数并使用以下公式根据需要格式化结果:

    =CONCATENATE(TEXT(INT(SUM(C3,-B3)),"00")," days ",
    TEXT(MOD(SUM(C3,-B3),1),"hh:mm:ss"))
    

    INT 公式采用日期差异产生的序列号的整数部分 MOD 给出序列号的小数部分 使用TEXT 公式根据需要格式化这两个部分,然后连接这些部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-04
      相关资源
      最近更新 更多