繁体   English   中英

年日时分格式中两个日期之间的差异

[英]Difference between two dates in years days hours minutes format

我试图找出两天“xx 年 xx 天 xx 小时 xx 分钟”格式之间的区别。 我的开始日期在 A 列中,结束日期在 B 中。计算 C 列中的差异。

我在 C 列中使用B1-A1公式,并在 C 列中使用自定义格式"yy" years "dd" days "hh" hours "mm" minutes" 。如果开始和结束年份不同,它工作正常。但如果它是一样的,C 列报告错误的年和日。(显示为 99 年和 30 天)。

如何解决?

示例谷歌表链接

如果两个值相同,则放置条件,否则应该做减法

=IF(A1=B1,"0",B1-A1)

如果你想要你的格式的答案=IF(A1=B1,"00 years 00 days 00 hours 00 minutes",B1-A1)

这是因为 GS 将零日期视为其日历的第一天,即 1899-12-30。 如果您检查或时差年份不是 1899 并相应地重新格式化结果,您可以获得正确的结果:

=if(year(B2-A2)=1899,TEXT(B2-A2,"00 \y\ear\s 00 \da\y\s hh \hour\s mm \minut\e\s"),B2-A2)

在此处输入图片说明

有点长,但它有效。 想尝试TEXT但我有额外的条件。

公式:

=datedif(A2, B2, "y")&" years "
&if(day(B2) >= day(A2),
if(timevalue(B2) >= timevalue(A2), 
day(B2) - day(A2), 
day(B2) - day(A2) - 1),
if(timevalue(B2) >= timevalue(A2), 
day(eomonth(B2, -1)) + day(B2)-min(day(A2), day(eomonth(B2, -1))), 
day(eomonth(B2, -1)) + day(B2)-min(day(A2), day(eomonth(B2, -1))) -1))&" days "
&hour(B2 - A2)&" hours "
&minute(B2 - A2)&" minutes"

输出:

输出

笔记:

  • 公式负责格式化。
  • 由于每个月的天数不同,天数有一个非常复杂的公式。 但这应该显示更准确的答案
  • timevalue(B2)>timevalue(A2)添加到原始公式中以考虑开始日期的较晚时间,如果发生这种情况,则将天数减少 1

参考:

您的B2 - A2公式实际上得到了正确的结果 - 它是一个日期序列值,表示以days为单位的两个时刻之间的差异。

问题在于您使用的自定义数字格式。 它指的是日历时间,而您需要经过的时间。 不幸的是,Google Sheets 显然只支持以小时、分钟和秒为单位的经过时间。

如果文本字符串结果对您没问题,请使用以下命令:

=datedif(A2, B2, "y") & " years " & datedif(A2, B2, "d") - 365 * datedif(A2, B2, "y") & " days " & text(B2 - A2 - int(B2 - A2), "HH ""hours"" mm ""minutes""")

该公式假设所有年份都是 365 天,当日期跨度跨越闰日时,这将不正确。

有关日期和时间值如何在电子表格中工作的说明,请参阅此答案

尝试:

=INDEX(IFERROR(TRIM(REGEXREPLACE(
 TEXT(DATEDIF(A2:A, B2:B, "Y"), "0#")&   CHOOSE(MATCH(DATEDIF(A2:A, B2:B, "Y"),  {0, 2}), " year ",  " years ")& 
 TEXT(DATEDIF(A2:A, B2:B, "YD"), "0#")&  CHOOSE(MATCH(DATEDIF(A2:A, B2:B, "YD"), {0, 2}), " day ",   " days ")&
 TEXT(TEXT(B2:B-A2:A, "H"), "0#")&       CHOOSE(MATCH(TEXT(B2:B-A2:A, "H")  *1,  {0, 2}), " hour ",  " hours ")&
 TEXT(INT(TEXT(B2:B-A2:A, "M.S")), "0#")&CHOOSE(MATCH(TEXT(B2:B-A2:A, "M.S")*1,  {0, 2}), " minute", " minutes"),
 "\b0 (year|day|hour|minute)", ))))
  • 使用闰年
  • 使用单数
  • 使用复数
  • 使用数组
  • 以秒为单位
  • 仅适用于日期
  • 仅适用于时间
  • 排除所有空值

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM