关于c#:以“X年,Y个月,Z周,A日”的形式计算两个日期之间的差异

Calculate difference between two dates in form `X years, Y months, Z week, A day`

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How to get difference between two dates in Year/Month/Week/Day?

我如何计算到目前为止的精确差异,包括年、日、月、周。就像Windows计算器一样。?

像这样代表


我不相信.NET本身有什么有用的功能。TimeSpan(你可以从date2 - date1)中得到)没有月等概念——实际上,它只是一个计时周期。

你可以用noda时间,但还没有完全完成。周期计算部分可能会进一步改变…我还不确定。如果您想要NODA时间代码示例,请告诉我。

也要注意,使用日期的算术运算从根本上是很复杂的。有时很难找出正确的答案…


在msdn上找到这个对于您的案例,您可以使用第一个方法System.TimeSpan来获得指定格式的差异。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
System.DateTime date1 = new System.DateTime(1996, 6, 3, 22, 15, 0);
System.DateTime date2 = new System.DateTime(1996, 12, 6, 13, 2, 0);
System.DateTime date3 = new System.DateTime(1996, 10, 12, 8, 42, 0);

// diff1 gets 185 days, 14 hours, and 47 minutes.
System.TimeSpan diff1 = date2.Subtract(date1);

// date4 gets 4/9/1996 5:55:00 PM.
System.DateTime date4 = date3.Subtract(diff1);

// diff2 gets 55 days 4 hours and 20 minutes.
System.TimeSpan diff2 = date2 - date3;

// date5 gets 4/9/1996 5:55:00 PM.
System.DateTime date5 = date1 - diff2;

http://msdn.microsoft.com/en-us/library/8ysw4sby(v=vs.80).aspx y913


试试这个。

1
2
TimeSpan span = endDate - startDate;
//span.TotalDays gives days

至于几个月、几年和几周,我们想知道你是需要一个Math.Floor还是Math.Ceil