我有一个开始DateTime和一个结束日期时间,需要计算两者之间的夜数(不是天数),默认/最小值为1。
我有
int NumberOfDays = Convert.ToInt32((EndDateTime - StartDateTime).Days)
返回的天数总是超过1.我不确定从结果中减去1是一个合适的解决方案。
我也试过
int NumberOfDays = Convert.ToInt32((EndDateTime - StartDateTime).ToDays)
这也会返回相同的结果。
除了每次减去1并确保它永远不会返回0之外,是否有更智能的解决方案?
答案 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)