जवाबों:
if (StartDate < EndDate)
// code
अगर आप सिर्फ तारीखें चाहते हैं, और समय नहीं
if (StartDate.Date < EndDate.Date)
// code
if(StartDate < EndDate)
{}
DateTime सामान्य तुलना ऑपरेटरों का समर्थन करता है।
if(dateTimeA > dateTimeB) Console.WriteLine("Do your own homework");
आप अतिभारित <या> ऑपरेटरों का उपयोग कर सकते हैं।
उदाहरण के लिए:
DateTime d1 = new DateTime(2008, 1, 1);
DateTime d2 = new DateTime(2008, 1, 2);
if (d1 < d2) { ...
if (StartDate>=EndDate)
{
throw new InvalidOperationException("Ack! StartDate is not before EndDate!");
}
यह शायद बहुत देर हो चुकी है, लेकिन अन्य लोगों को लाभान्वित करने के लिए जो इस पर ठोकर खा सकते हैं, मैंने इस IComparableतरह का उपयोग करके एक विस्तार विधि का उपयोग किया:
public static class BetweenExtension
{
public static bool IsBetween<T>(this T value, T min, T max) where T : IComparable
{
return (min.CompareTo(value) <= 0) && (value.CompareTo(max) <= 0);
}
}
इस विस्तार पद्धति का उपयोग इस पद्धति को IComparableऔर अधिक सामान्य बनाता है और इसे कई प्रकार के डेटा प्रकारों के साथ प्रयोग करने योग्य बनाता है, न कि केवल तिथियों के लिए।
आप इसे इस तरह उपयोग करेंगे:
DateTime start = new DateTime(2015,1,1);
DateTime end = new DateTime(2015,12,31);
DateTime now = new DateTime(2015,8,20);
if(now.IsBetween(start, end))
{
//Your code here
}
मेरी भी यही आवश्यकता थी, लेकिन स्वीकृत उत्तर का उपयोग करते समय, यह मेरे सभी यूनिट परीक्षणों को पूरा नहीं करता था। मेरे लिए मुद्दा यह है कि जब आपके पास एक नई वस्तु है, तो प्रारंभ और समाप्ति तिथियों के साथ और आपको प्रारंभ तिथि निर्धारित करनी होगी (इस स्तर पर आपकी अंतिम तिथि का न्यूनतम दिनांक मूल्य 01/01/0001 है) - इस समाधान ने सभी को पारित किया मेरी इकाई परीक्षण:
public DateTime Start
{
get { return _start; }
set
{
if (_end.Equals(DateTime.MinValue))
{
_start = value;
}
else if (value.Date < _end.Date)
{
_start = value;
}
else
{
throw new ArgumentException("Start date must be before the End date.");
}
}
}
public DateTime End
{
get { return _end; }
set
{
if (_start.Equals(DateTime.MinValue))
{
_end = value;
}
else if (value.Date > _start.Date)
{
_end = value;
}
else
{
throw new ArgumentException("End date must be after the Start date.");
}
}
}
यह उस किनारे के मामले को याद करता है, जहां प्रारंभ और समाप्ति दिनांक दोनों 01/01/0001 हो सकते हैं, लेकिन मुझे इस बारे में चिंता नहीं है।
if (new DateTime(5000) > new DateTime(1000))
{
Console.WriteLine("i win");
}
मैं यह प्रदर्शित करना चाहूंगा कि यदि आप इसमें कनवर्ट करते हैं। यह सुनिश्चित करें कि आपको घंटों / मिनट / सेकंड आदि के बारे में चिंता करने की आवश्यकता नहीं है:
[Test]
public void ConvertToDateWillHaveTwoDatesEqual()
{
DateTime d1 = new DateTime(2008, 1, 1);
DateTime d2 = new DateTime(2008, 1, 2);
Assert.IsTrue(d1 < d2);
DateTime d3 = new DateTime(2008, 1, 1,7,0,0);
DateTime d4 = new DateTime(2008, 1, 1,10,0,0);
Assert.IsTrue(d3 < d4);
Assert.IsFalse(d3.Date < d4.Date);
}