3 回答

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

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
通常我會(huì)為這些事情創(chuàng)建Fowler's Range實(shí)現(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);
}
}
用法非常簡(jiǎn)單:
DateRange range = new DateRange(startDate, endDate);
range.Includes(date)

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