如何比较DateTime C#月和周

时间:2011-06-23 08:23:39

标签: c# datetime c#-2.0

我需要比较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");
    }

是比较c#中日期的最佳方法。 同样,我需要比较日期不到两周或不是

任何帮助表示赞赏

由于

SUP

5 个答案:

答案 0 :(得分:3)

您可以使用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进行比较

答案 1 :(得分:0)

两周:

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

12个月(一年)(考虑每月的某一天并不重要):

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

答案 2 :(得分:0)

你可以做到

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个月”。

答案 3 :(得分:0)

为了更清楚地理解:您不想比较两个日期(或日期时间),而是两个 TimeSpans 。即 now 与您提供的日期之间的时间差 - 以及12个月的时间跨度。

String d = "26/06/10";
DateTime dt = DateTime.ParseExact(d, "dd/MM/yy", CultureInfo.InvariantCulture);
TimeSpan deltaTimeSpan = dt - DateTime.Now;      // get the time difference between now and the time given
TimeSpan twelveMonths = new TimeSpan(365,0,0,0); // get a time span of 12 months

// round the amount of days down and always supply a positive number of days
int deltaTime = Convert.ToInt32(Math.Abs(Math.Floor(deltaTimeSpan.TotalDays)));

if (twelveMonths.TotalDays > deltaTime)
{
    Console.WriteLine(string.Format("It is less than 12 months ({0} days).", deltaTime));
}
else if (twelveMonths.TotalDays < deltaTime)
{
    Console.WriteLine(string.Format("It is more than 12 months ({0} days).", deltaTime));
}
else
{
    Console.WriteLine(string.Format("The difference in time is exactly 12 months. ({0} days).", deltaTime);
}

请注意,这个例子肯定没有考虑到闰年。该代码确实将年份中的天气与过去或未来的谎言进行比较(通过将TimeSpan转换为正值并与该值进行比较)。

调整上述代码以便在两周或任何其他时间段内执行相同操作应该非常简单。只需更改名为“十二月”的TimeSpan。

答案 4 :(得分:0)

DateTime date1 = DateTime.Now.AddMonths(-12)
if(DateTime.Compare(dt, date1 )
{
//provided date is within 12 months
}
else
{
//provided date is after 12 months
}