2010-02-10 44 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); 
相關問題