3 回答

TA貢獻1877條經(jīng)驗 獲得超6個贊
不,做一個簡單的比較對我來說很好看:
return dateToCheck >= startDate && dateToCheck < endDate;
值得考慮的事情:
DateTime在時區(qū)方面有點奇怪。它可能是UTC,它可能是“本地的”,它可能是模棱兩可的。確保你將蘋果與蘋果進行比較。
考慮您的起點和終點應該是包容性的還是排他性的。我已經(jīng)將上面的代碼視為包含下限和獨占上限。

TA貢獻1812條經(jīng)驗 獲得超5個贊
通常我會為這些事情創(chuàng)建Fowler's Range實現(xiàn)。
public interface IRange<T>
{
T Start { get; }
T End { get; }
bool Includes(T value);
bool Includes(IRange<T> range);
}
public class DateRange : IRange<DateTime>
{
public DateRange(DateTime start, DateTime end)
{
Start = start;
End = end;
}
public DateTime Start { get; private set; }
public DateTime End { get; private set; }
public bool Includes(DateTime value)
{
return (Start <= value) && (value <= End);
}
public bool Includes(IRange<DateTime> range)
{
return (Start <= range.Start) && (range.End <= End);
}
}
用法非常簡單:
DateRange range = new DateRange(startDate, endDate);
range.Includes(date)

TA貢獻1864條經(jīng)驗 獲得超6個贊
您可以使用擴展方法使其更具可讀性:
public static class DateTimeExtensions
{
public static bool InRange(this DateTime dateToCheck, DateTime startDate, DateTime endDate)
{
return dateToCheck >= startDate && dateToCheck < endDate;
}
}
現(xiàn)在你可以寫:
dateToCheck.InRange(startDate, endDate)
- 3 回答
- 0 關注
- 804 瀏覽
添加回答
舉報