如何在.NET中获得两天的差异

时间:2013-10-25 09:35:35

标签: c# .net datetime

我想找到员工的服务期,我已经从数据库中获得了员工加入日期

前加入日期:2007/03/24

现在我需要找到系统日期和加入日期之间的区别,如果有人能够了解这一点,请帮助我谢谢。

我编写的示例代码以获得答案,但它无法正常工作

 public TimeSpan periodOfService
       {
           get
           {
                //DateOfJoin-->which i get from my database
               DateTime  JoinDate   = Convert.ToDateTime(DateOfJoin);
               DateTime TodayData =  DateTime.Now;

               TimeSpan servicePeriod = JoinDate - TodayData;

               return servicePeriod;
           }
   }

输出格式 - > 2年,3个月
我怎么能在Asp.net MVC 4中做到这一点?

4 个答案:

答案 0 :(得分:5)

首先,交换日期。

您想从JoinDate中减去TodayData(同时修改拼写和命名惯例):

public TimeSpan periodOfService
       {
           get
           {
                //DateOfJoin-->which i get from my database
               DateTime  JoinDate   = Convert.ToDateTime(DateOfJoin);
               DateTime TodayData =  DateTime.Now;

               TimeSpan servicePeriod = TodayData - JoinDate;

               return servicePeriod;
           }
   }

不幸的是,OP以您想要的格式输出此TimeSpan值比您最初想象的要复杂得多,请参阅以下文章了解如何实现该目标:

http://joelfillmore.com/years-and-months-between-dates/

我建议您阅读它建议的解决方案,然后研究使用该方法:

public DateSpan(DateTime startDate, DateTime endDate)

答案 1 :(得分:-1)

通常情况下,您会使用TimeSpan来表示日期之间的差异,但是您需要将差异显示为年份和月份,因此TimeSpan不合适。相反,您可以创建一个类来表示差异:

class DateDifference {

  public DateDifference(Int32 years, Int32 months) {
    Years = years;
    Months = months;
  }

  public Int32 Years { get; private set; }

  public Int32 Months { get; private set; }

}

您可以使用简单的算术计算两个日期之间的差异:

DateDifference GetDateDifference(DateTime first, DateTime second) {
  if (second < first)
    throw new ArgumentOutOfRangeException("second", "The second date cannot occur before the first.");
  var years = second.Year - first.Year;
  var months = second.Month - first.Month;
  if (second.Month < first.Month) {
    years -= 1;
    months += 12;
  }
  return new DateDifference(years, months);
}

然后您可以在代码中使用该功能:

var dateDifference = GetDateDifference(JoinDate, TodayDate);

答案 2 :(得分:-1)

这将使您了解两个日期之间的差异,无论是将来还是过去。 如果它是无效日期,则返回零跨度

public TimeSpan periodOfService
{
    get
    {
        DateTime JoinDate;
        if (DateTime.TryParse(DateOfJoin, out JoinDate))
        {
            return DateTime.Now > JoinDate ? DateTime.Now - JoinDate : JoinDate - DateTime.Now;
        }
        return TimeSpan.Zero;
    }
}

答案 3 :(得分:-3)

你可以获得总日差异并将其转换为月和年 一个简单的样本就在这里

TimeSpan servicePeriod = TodayData - JoinDate;
string result = string.Format("{0} Years, {1} Months, {2} Days", servicePeriod.TotalDays / 365, servicePeriod.TotalDays / 30, servicePeriod.TotalDays);

你可以返回不是时间跨度的字符串