计算两个DateTimes之间的天数

本文关键字:之间 DateTimes 两个 计算 | 更新日期: 2023-09-27 18:19:19

我有一个开始日期时间和一个结束日期时间,需要计算两者之间的夜(不是天)的数量,默认/最小值为1。

我有

int NumberOfDays = Convert.ToInt32((EndDateTime - StartDateTime).Days)

返回总超过1的天数。我不确定从结果中减去1是一个合适的解决方案。

我也试过

int NumberOfDays = Convert.ToInt32((EndDateTime - StartDateTime).ToDays)

返回相同的结果。

除了每次减去1并确保它永远不会返回0之外,有没有更聪明的解决方案?

计算两个DateTimes之间的天数

您可以使用扩展方法使其在任何地方简单地重用。

public static class DateTimeExtensions
{
    public static int NumberOfNights(this DateTime date1, DateTime date2)
    {
        //feel free to make here better
        var frm = date1 < date2 ? date1 : date2;
        var to = date1 < date2 ? date2 : date1;
        var totalDays = (int)(to-frm).TotalDays;
        return totalDays > 1 ? totalDays : 1;
    }
}

一样使用
var to = DateTime.Now.AddDays(3);
var frm = DateTime.Now;
frm.NumberOfNights(to)