在C#中两个日期之间获得差异的最简单方法是什么?
ie:(date1 - date2).TotalMonths ..有点事。谢谢!
答案 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 );