以"X年、Y月、Z周、A天"的形式计算两个日期之间的差异

本文关键字:quot 之间 计算 日期 两个 | 更新日期: 2023-09-27 18:01:35

可能重复:
如何获得年/月/周/日中两个日期之间的差异?

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

并像这样表示1 years, 1 months, 1 week, 1 day

以"X年、Y月、Z周、A天"的形式计算两个日期之间的差异

我不相信.NET本身内置了任何有用的东西。TimeSpan(你可以从date2 - date1中得到(没有月等概念——实际上,它只是一个滴答声中的持续时间。

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

还要注意,使用日期进行算术运算从根本上来说是很棘手的。有时甚至很难找出正确的答案…

试试这个。

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

至于月、年和周,人们想知道您是需要Math.Floor还是Math.Ceil

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

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