第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何知道DateTime是否在C#中的DateRange之間

如何知道DateTime是否在C#中的DateRange之間

Smart貓小萌 2019-09-02 15:39:07
我需要知道Date是否在DateRange之間。我有三個日期:// The date rangeDateTime startDate;DateTime endDate;DateTime dateToCheck;簡單的解決方案是進行比較,但是有更聰明的方法嗎?提前致謝。
查看完整描述

3 回答

?
慕哥9229398

TA貢獻1877條經(jīng)驗 獲得超6個贊

不,做一個簡單的比較對我來說很好看:


return dateToCheck >= startDate && dateToCheck < endDate;

值得考慮的事情:


DateTime在時區(qū)方面有點奇怪。它可能是UTC,它可能是“本地的”,它可能是模棱兩可的。確保你將蘋果與蘋果進行比較。

考慮您的起點和終點應該是包容性的還是排他性的。我已經(jīng)將上面的代碼視為包含下限和獨占上限。


查看完整回答
反對 回復 2019-09-02
?
ABOUTYOU

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)


查看完整回答
反對 回復 2019-09-02
?
慕尼黑的夜晚無繁華

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)


查看完整回答
反對 回復 2019-09-02
  • 3 回答
  • 0 關注
  • 804 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號