Dan*_*lba 69 .net c# datetime date-range
我需要知道Date是否在DateRange之间.我有三个日期:
// The date range
DateTime startDate;
DateTime endDate;
DateTime dateToCheck;
Run Code Online (Sandbox Code Playgroud)
简单的解决方案是进行比较,但有更聪明的方法吗?
提前致谢.
Jon*_*eet 114
不,做一个简单的比较对我来说很好看:
return dateToCheck >= startDate && dateToCheck < endDate;
Run Code Online (Sandbox Code Playgroud)
值得考虑的事情:
DateTime
在时区方面有点奇怪.它可能是UTC,可能是"本地的",也可能是模棱两可的.确保你将苹果与苹果进行比较.Ser*_*kiy 58
通常我会为这些事情创建Fowler's Range实现.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
用法非常简单:
DateRange range = new DateRange(startDate, endDate);
range.Includes(date)
Run Code Online (Sandbox Code Playgroud)
Eli*_*ing 38
您可以使用扩展方法使其更具可读性:
public static class DateTimeExtensions
{
public static bool InRange(this DateTime dateToCheck, DateTime startDate, DateTime endDate)
{
return dateToCheck >= startDate && dateToCheck < endDate;
}
}
Run Code Online (Sandbox Code Playgroud)
现在你可以写:
dateToCheck.InRange(startDate, endDate)
Run Code Online (Sandbox Code Playgroud)
您可以使用:
return (dateTocheck >= startDate && dateToCheck <= endDate);
Run Code Online (Sandbox Code Playgroud)
小智 5
在进行任何类型的日期数学时,我发现以下库是最有用的.我仍然感到惊讶,因为这是.Net框架的一部分.
http://www.codeproject.com/Articles/168662/Time-Period-Library-for-NET
归档时间: |
|
查看次数: |
112252 次 |
最近记录: |