gpt4 book ai didi

c# - 日期范围内给定年份的天数

转载 作者:太空宇宙 更新时间:2023-11-03 18:02:19 25 4
gpt4 key购买 nike

假设我有一年,2017 年。

然后我有一个日期范围,01/07/2017 - 01-07-201801/07/2017 - 01-01-201701/01/2016 - 01/01/2018 ( <- 这应该返回 365 天)

我现在需要计算有多少 total days有没有在给定的range对于给定的 year .

请注意,日期存储为 dd/mm/yyyy,时间始终为 00:00:00。

考虑所有可能的范围情况,最好的逻辑是什么?

最佳答案

您可以轻松计算一年的开始和结束日期:

var start2017 = new DateTime(2017,1,1);
var end2017 = new DateTime(2017,12,31);

然后你可以计算这个新范围和你的其他范围1之间的重叠:
var startOverlap = start2017 < startOtherRange ? startOtherRange : start2017;
var endOverlap = end2017 > endOtherRange ? endOtherRange : end2017;

var totalDays = (endOverlap - startOverlap).TotalDays + 1;

如果范围旨在包括其开始日期和结束日期,则上述内容是正确的。例如,如果您想要一个专有端点,那么我们将在一天前调整 2017 年计算范围的结束,并且不再需要 +1最后调整)

(我想你可以从那里得到如何将它变成一个函数,如果需要的话,它需要 year, startRange, endRange 参数并通过一些适当的重命名来完成上述操作)

1我对 DateTime.Min(value1, value2) 有一些模糊的记忆。 Max 也是如此但它绝对不在我能看到的 BCL 中。这些将替换以下行中的条件运算符。一旦 C# 有了“扩展一切”,这些函数就可以写成 DateTime 的静态扩展。 .

关于c# - 日期范围内给定年份的天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51767089/

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