在C#的两个日期之间获得差异的最简单方法是什么?

时间:2010-02-10 04:53:47

标签: c# date

在C#中两个日期之间获得差异的最简单方法是什么?

ie:(date1 - date2).TotalMonths ..有点事。谢谢!

5 个答案:

答案 0 :(得分:5)

鉴于您对原始问题所做的更新:如何编写一个需要两个日期并执行以下操作的函数,

DateTime d1 = new DateTime(2008, 12, 1);
DateTime d2 = new DateTime(2009, 1, 1);

var month_diff = (d2.Year - d1.Year)*12 + (d2.Month - d1.Month);
Console.WriteLine(month_diff);

答案 1 :(得分:4)

由于您已经知道您的日期将是该月的第一天:

int totalMonths = (date2.Year - date1.Year)*12 + date2.Month - date1.Month;

答案 2 :(得分:2)

我建议的最好的方法是获取总天数,然后通过相应的划分大致计算月数。类似的东西:

DateTime dt1 = new DateTime( 2010, 10, 23);
DateTime dt2 = new DateTime( 2010, 7, 23);
TimeSpan ts = dt1 - dt2;
int days_per_month = 30;
Console.Write( ts.TotalDays / days_per_month);

如果你真的对2010年2月1日 - 2010年1月31日的回答是1个月作为答案,那么考虑到上面的代码,你可以通过

轻松实现这一目标。
Console.Write( dt1.Month - dt2.Month);

这没有考虑到这一年,所以我推迟到这里做到这一点的另一个答案。 :)

答案 3 :(得分:2)

如果您不知道如何计算.net中的日期范围,这是一个很好的例子:

DateTime startTime = DateTime.Now;
DateTime endTime = DateTime.Now.AddSeconds(75);

TimeSpan span = endTime.Subtract ( startTime );
Console.WriteLine( "Time Difference (seconds): " + span.Seconds );
Console.WriteLine( "Time Difference (minutes): " + span.Minutes );
Console.WriteLine( "Time Difference (hours): " + span.Hours );
Console.WriteLine( "Time Difference (days): " + span.Days );

来源:here

DateTime不会公开月份差异,因为每个月都有不同的天数。获得月份的最简单方法是totaldays / 30

答案 4 :(得分:0)

TimeSpan上课:)

 TimeSpan span = endTime.Subtract ( startTime );
 Console.WriteLine( "Time Difference (months): " + span.Days / 30 );