Reputation: 47945
I have to check if a date (month-year) is minus than actual date.
I know how to do it only with single month or year, like
DateTime.Parse(o.MyDate).Month <= DateTime.Now.Month
or
DateTime.Parse(o.MyDate).Year <= DateTime.Now.Year
but how can I check directly if month-year is minus than now.month-now.year?
EDIT
What I have to do is, for example, to check if 10-2011 (DateTime.Now.Month-DateTime.Now.Year) is between 01-2011 and 04-2012...
Upvotes: 11
Views: 40062
Reputation: 11
DateTime date1 = new DateTime(2011, 1, 1, 0, 0, 0);
DateTime date2 = new DateTime(2011, 2, 1, 0, 0, 0);
if (DateTime.Parse(date1.ToString("MM-yyyy")) <= DateTime.Parse(date2.ToString("MM-yyyy")))
{
// Some code
Console.WriteLine("date1 is less than or equal to date2");
}
else
{
// Some code
Console.WriteLine("date1 is greater than date2");
}
Upvotes: 0
Reputation: 11
var date1 = new DateTime(year1, month1, 1);
var date2 = new DateTime(year2, month2, 1);
if(date1 < date2)...
Upvotes: 1
Reputation: 1
Date date1 = new Date(2011, 1, 1, 0, 0, 0);
Date date2 = new Date(2011, 2, 1, 0, 0, 0);
int result = DateCompare(date1, date2);
if the result is < 0 then date1 < date2
if the result is 0 then date1 == date2
if the result is > 0 the date1 > date2
Upvotes: -1
Reputation: 174289
If the years are the same, compare the months, if the years are not the same, your year must be smaller than now:
var yourDate = ...;
if((yourDate.Year == DateTime.Now.Year && yourDate.Month < DateTime.Now.Month)
|| yourDate.Year < DateTime.Now.Year)
{
// yourDate is smaller than todays month.
}
UPDATE:
To check if yourDate
is in a certain time range, use this:
var yourDate = ...;
var lowerBoundYear = 2011;
var lowerBoundMonth = 1;
var upperBoundYear = 2012;
var upperBoundMonth = 4;
if(((yourDate.Year == lowerBoundYear && yourDate.Month >= lowerBoundMonth) ||
yourDate.Year > lowerBoundYear
) &&
((yourDate.Year == upperBoundYear && yourDate.Month <= upperBoundMonth) ||
yourDate.Year < lowerBoundYear
))
{
// yourDate is in the time range 01/01/2011 - 30/04/2012
// if you want yourDate to be in the range 01/02/2011 - 30/04/2012, i.e.
// exclusive lower bound, change the >= to >.
// if you want yourDate to be in the range 01/01/2011 - 31/03/2012, i.e.
// exclusive upper bound, change the <= to <.
}
Upvotes: 15
Reputation: 111820
var date = DateTime.Parse(o.MyDate);
var year = date.Year;
// We don't even want to know what could happen at 31 Dec 23.59.59 :-)
var currentTime = DateTime.Now;
var currentYear = currentTime.Year;
bool result = year < currentYear ||
(year == currentYear &&
date.Month <= currentTime.Month)
Second option:
var date = DateTime.Parse(o.MyDate).Date; // We round to the day
date = date.AddDays(-date.Day); // and we remove the day
var currentDate = DateTime.Now.Date;
currentDate = currentDate.AddDays(-currentDate.Day);
bool result = date <= currentDate;
Third option (more "old school" perhaps)
var date = DateTime.Parse(o.MyDate);
var currentTime = DateTime.Now;
// Each year can be subdivided in 12 parts (the months)
bool result = date.Year * 12 + date.Month <= currentTime.Year * 12 + currentTime.Month;
Upvotes: 8
Reputation: 63065
DateTime dateCheck = DateTime.Parse(o.MyDate);
bool result = ((Now.Month - dateCheck.Month) + 12 * (Now.Year - dateCheck.Year)) > 0
Upvotes: 4