2010-02-10 47 views
3

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

ie:(date1 - date2).TotalMonths ..种类的东西。谢谢!

+1

你应该明确你的意思是'月的差异'。例如,您是否希望2010年1月31日至2010年2月1日的差异为1个月? – 2010-02-10 04:57:52

+0

是的,我希望它是在这种情况下1个月的差异。 我的要求规定date1和date2将始终是给定月份中的第一个。谢谢! – 2010-02-10 05:02:00

+0

我用评论更新了我的答案,并且实际上会根据给出的这些新信息更新我的答案文本。 – Dave 2010-02-10 05:30:48

回答

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年01月31,传回1每月的答案,然后给上面的代码,你将能够获得在这一点很容易通过使用

Console.Write(dt1.Month - dt2.Month); 

这没有考虑到年,所以我在这里按照其他答案。 :)

+0

是啊谢谢..我现在有..但是不够准确。我知道一个更大的方法,我可以准确计算它..只是想知道是否有一个更简单的方法,我失踪了。 – 2010-02-10 05:04:36

+0

您是否可以在应用于像月份这样的非特定单位时间时定义“准确性”? :) – Dave 2010-02-10 05:15:31

+0

我刚刚看到您的评论到您原来的帖子。在这种情况下,2月1日至1月31日为一个月,您只需减去月份属性,即dt1.Month - dt2.Month。 – Dave 2010-02-10 05:30:21

0

TimeSpan类:)

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

怎么样?这是最简单的方法吗? – 2010-02-10 05:03:08

+0

由于月份有不同的天数,因此不准确。 – Will 2010-02-10 05:38:17

+0

@将同意:)由于他使用“大”单位,我只是假设他需要一个粗略的价值;) – 2010-02-10 07:10:08

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

+0

为什么如此之多的票?这不做什么是必需的! – 2010-02-10 05:11:47

+0

不得不同意...这个问题并不十分清楚,但这大大地忽略了这个标记,它只是Google第一次为问题的确切文本命中而进行的透明复制和粘贴作业。 -1。 – Aaronaught 2010-02-10 05:48:54

4

既然你已经知道你的日期将是第一个月:

int totalMonths = (date2.Year - date1.Year)*12 + date2.Month - date1.Month; 
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); 
相关问题