计算2个日期时间之间的夜晚数

时间:2015-10-26 12:05:17

标签: c# datetime

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

我有

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

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

我也试过

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

这也会返回相同的结果。

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

1 个答案:

答案 0 :(得分:0)

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

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)