Как сравнить DateTime C # Месяцы и недели - PullRequest
1 голос
/ 23 июня 2011

Мне нужно сравнить дату в C #, если дата меньше 12 месяцев, мне нужно установить логическое значение

Мой код

    String d  = "26/06/10";
    DateTime dt = DateTime.ParseExact(d, "dd/MM/yy", null);
    if ((dt > DateTime.Now.AddMonths(-12)  ) )
    {
        Console.WriteLine("It is less than 12 months");
    }
    else
    {
        Console.WriteLine("It is more than 12 months");
    }

Это лучший способсравнить дату в с #.Точно так же мне нужно сравнить дату меньше двух недель или нет

Любая помощь приветствуется

Спасибо

sup

Ответы [ 5 ]

3 голосов
/ 23 июня 2011

Вы можете использовать TimeSpan, чтобы получить разницу между двумя DateTime значениями

String d = "26/06/10";
DateTime dt = DateTime.ParseExact(d, "dd/MM/yy", null);
DateTime dt2 = DateTime.Now.AddMonths(-12);

TimeSpan ts = dt - dt2;

Вы можете использовать ts.Days для сравнения

0 голосов
/ 23 июня 2011
DateTime date1 = DateTime.Now.AddMonths(-12)
if(DateTime.Compare(dt, date1 )
{
//provided date is within 12 months
}
else
{
//provided date is after 12 months
}
0 голосов
/ 23 июня 2011

Для более ясного понимания: вы не хотите сравнивать две даты (или DateTimes), а две TimeSpans .А именно, разница во времени между сейчас и датой, которую вы указали , и промежутком времени в 12 месяцев.не принимать во внимание високосные годы.Код учитывает погоду года для сравнения с прошлым или будущим (путем преобразования TimeSpan в положительное значение и сравнения с ним).

Настройка приведенного выше кода для того жедве недели или любой другой промежуток времени должен быть достаточно простым.Просто измените интервал времени, который я назвал "двенадцать месяцев".

0 голосов
/ 23 июня 2011

Вы могли бы сделать

DateTime date2 = DateTime.Now.AddMonths(-12);
  //Or if you want to neglect the time part you could do
DateTime date2 = new DateTime(DateTime.Now.Year,DateTime.Now.Month,DateTime.Now.Day,0,0,0).AddMonths(-12);
String d = "26/06/10"; 
DateTime date1 = DateTime.ParseExact(d, "dd/MM/yy", null);
int result = DateTime.Compare(date1, date2);
string res;

if (result < 0)
   Console.WriteLine("It is less than 12 months"); 
else if (result == 0)
   res = "is the equal";         
else
    Console.WriteLine("It is more than 12 months"); 

Проблема с вашим фрагментом кода в том, что он выдаст «Больше 12 месяцев», даже если дата равна.

0 голосов
/ 23 июня 2011

на две недели:

if (dt1.Subtract(dt2).Days > 14)
{
    ...
}  

на 12 месяцев (один год) (с учетом дня месяца не важно):

var monthDifference = ((dt1.Year - dt2.Year) * 12) + dt1.Month - dt2.Month
...