2014-03-03 79 views
0

我想用下面的代碼:在time_t中轉換DateTime而不在C++ CLI中處理錯誤是否安全?

long long DateTimeToTimeT(System::DateTime dt) 
{ 
    System::DateTime epoch(1970, 1, 1, 0, 0, 0, 0); 
    long long totalSeconds = (dt - epoch).TotalSeconds; 

    return totalSeconds >= 0 ? totalSeconds : 0; 
} 

所以問題是:是否有異常安全的,或者我應該在這裏處理一些錯誤?

我的意思是:在這種情況下,是否可以安全地將double(即TotalSeconds)轉換爲long long

+0

什麼時候dt cjb110

+0

@ cjb110可能會更好,其實......它被使用=) – user2706838

回答

0

是的,它是安全的:減去兩個日期從不拋出(http://msdn.microsoft.com/en-us/library/1905yhe2(v=vs.110).aspx),因爲TimeSpan涵蓋比有效日期更大的時間間隔。

+0

其實,當我發佈這個問題時 - 我想到了雙倍長期轉換問題的問題。 – user2706838

+0

TimeSpan的內部表示是Int64,所以沒有從double轉換到或從double轉換,而是從Int64到long long,即相同的類型。 – Loghorn

相關問題