支持不傳參數/傳1個參數/傳2個參數。
不傳參數:返回今天內的日期時間範圍;
傳1個參數:自動判斷該參數早於/晚於當前日期時間,並自動返回合理有效的時間範圍;
傳2個參數:自動判斷兩個參數的大小,並按日期時間從小到大返回有效的時間範圍。
/// <summary>
/// 返回日期時間範圍
/// </summary>
/// <param name="dt1">第一個日期時間</param>
/// <param name="dt2">第二個日期時間</param>
/// <returns>日期時間範圍元組</returns>
public static Tuple<DateTime, DateTime> GetDateTimeRange(DateTime? dt1 = null, DateTime? dt2 = null)
{
DateTime todayStart = DateTime.Today;
DateTime todayEnd = todayStart.AddDays(1).AddTicks(-1);
if (!dt1.HasValue && !dt2.HasValue)
{
return Tuple.Create(todayStart, todayEnd);
}
else if (dt1.HasValue && !dt2.HasValue)
{
DateTime input = dt1.Value;
return input < todayEnd
? Tuple.Create(input, todayEnd)
: input > todayStart ? Tuple.Create(todayStart, input) : Tuple.Create(todayStart, todayEnd);
}
else if (!dt1.HasValue && dt2.HasValue)
{
DateTime input = dt2.Value;
return input < todayEnd
? Tuple.Create(input, todayEnd)
: input > todayStart ? Tuple.Create(todayStart, input) : Tuple.Create(todayStart, todayEnd);
}
else
{
DateTime start = dt1.Value < dt2.Value ? dt1.Value : dt2.Value;
DateTime end = dt1.Value > dt2.Value ? dt1.Value : dt2.Value;
return Tuple.Create(start, end);
}
}