gpt4 book ai didi

c# - 计算日期范围内包含的日期数

转载 作者:太空狗 更新时间:2023-10-29 20:45:36 25 4
gpt4 key购买 nike

我要计算两个 DateTimes 之间涵盖(含)的date 的数量。

这不是 .TotalDays,因为少于 24 小时的时段可能仍会通过重叠两个不同的日子返回“2”。同样,相隔几分钟的两个日期仍应返回“1”。

例如:

2012-2-1 14:00 to 2012-2-2 23:00 -> 2 (1st and 2nd Feb)
2012-2-1 14:00 to 2012-2-2 10:00 -> 2 (1st and 2nd Feb)
2012-2-1 23:00 to 2012-2-2 00:00 -> 2 (1st and 2nd Feb)
2012-2-1 23:00 to 2012-2-3 00:00 -> 3 (1st, 2nd, 3rd Feb)
2012-2-1 14:00 to 2012-2-1 15:00 -> 1 (1st Feb)
2012-2-1 14:00 to 2012-2-1 14:00 -> 1 (1st Feb)
2012-1-1 00:00 to 2012-12-31 23:59 -> 366 (All of 2012)

我可以通过以下代码获得此功能:

DateTime dt1 = new DateTime(2000,1,2,12,00,00);
DateTime dt2 = new DateTime(2000,1,3,03,00,00);

int count = 0;
for (DateTime date = dt1; date.Date <= dt2.Date; date = date.AddDays(1))
count++;

return count;

有没有更好的办法?

最佳答案

为什么不只是:

int count = dt1.Date.Subtract(dt2.Date).Duration().Days + 1;

使用 .Date 将 Date 标准化为午夜 (0:00),将 Days 加 1 以获得不同日期的数量,而不仅仅是天数介于两者之间。

使用 Duration 确保您总是得到肯定的答案。

关于c# - 计算日期范围内包含的日期数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13970641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com