2008-11-29 75 views
0

如何計算C中的兩個日期(任何庫等)之間的時間段?使用C計算時間段C

程序應該將兩個(本地)日期作爲輸入,並提供它們之間的持續時間作爲輸出。

例如,

startDate = OCT-09-1976 and endDate = OCT-09-2008 
should show a duration of 32 years. 

startDate = OCT-09-1976 and endDate = DEC-09-2008 
should show a duration of 32 years and 2 months. 

感謝。

回答

1

我最近使用Boost.Date_Time做了非常類似的事情,並將結果函數呈現爲C,但這當然需要使用C++鏈接器。

實際上,這個例子有點不盡人意 - 開始日期和結束日期總是在一個月的同一天?如果是這樣,你可以忽略一天的數字,最後減去月份和年份的數字。

但是,如果您的日期可能在一個月的任何地方它可能會更棘手一些。請記住,並非所有的月份都有相同的天數!

C difftime不能幫助你進行月份計算,這就是爲什麼我使用了Boost,儘管你可能沒有這個選項。

3

轉換日期爲兩個結構TM結構與strptime

Difftime讓你在幾秒鐘內兩者之間的區別。

轉換到這幾個月等的代碼here(在C++中,但只有C++是字符串格式化,容易改變)

編輯:作爲評註者觀察到,避免了一個月的問題。有(GPL'd)代碼 isodiff_from_secs可以轉換成你想做的,如果你對它的假設感到滿意的話,幾個月有30天。見Google codesearch和標準here

這樣做完全正確的解決方案,它需要的實際天數之間的真實月acccount的描述是非常複雜的。這是你的問題所需要的嗎?

+0

請注意,您鏈接的示例只是通過執行天和年來計算月份的問題。 – 2008-11-29 16:04:32