2013-07-10 33 views
4

我有很大的舊C++項目。它至少有三個日期和時間結構。他們看起來像:現在我可以替換所有的Date類嗎?

struct Date { 
    int day; 
    int month; 
    int year; 
}; 

struct Time { 
    int hour; 
    int min; 
    int second; 
}; 

他們中的一些使用雙,對於時間::第二,有的已經「優化」,並使用簡稱Time::(min, hour)Date::(month, day)。因此,現在有了新的C++ 11標準(可能會提升),是否有可能用每個人都使用的東西來替換它們呢?

我確實看過std::chrono,但沒有看到我可以如何使用它。

例如,爲了說明我想在這裏測試案例: 我有一個功能,我給Date和協調這一功能,它計算在日出和日落和返回兩個Time結構。

+5

會重構所有的遺留代碼來解決任何特定的問題嗎? –

+0

現在我們實現了我們軟件的N + 1版本。很難處理所有相同的類,但名稱不同。就像其中一些有運營商實施,其他我們有格式化,一個功能接受這種類型的時間另一個接受另一個。一些時間來計算我需要的時間3次複製時間。 – user1244932

+0

'std :: chrono'用於_times_ not _dates_。即相對於某個其他時間(例如給定時間)的小時數,分鐘數,秒數等,但它不告訴你時間是星期三還是2013年7月。 –

回答

3

C++ 11沒有日期類。有一個建議(基於Boost.DateTime)爲TR2,但(TR2)從未最終確定。

我會看Boost.DateTime看它是否做你想要的。

+0

謝謝,我看着它。現在看起來危險。我擔心帶時區支持的課程。我對Qt QDateTime有不好的經驗,它在內部使用我的時區和QDateTime算法給出了非常奇怪的結果,直到我明確地爲每個QDateTime實例設置了UTC。 – user1244932

+0

'boost :: posix_time :: ptime'不需要「內部」任何東西。 –

相關問題