2011-06-08 82 views

回答

6

取決於time_t是如何在標準C頭文件中定義的。

如果time_t是64位,則C#等效項爲long

如果time_t是32位,那麼它有2038年的錯誤,你應該問誰寫了一個非bug的版本的DLL。

2

根據Wikipedia's article on Time_t你可以使用一個integer (Int32 or Int64)

Unix和POSIX兼容的系統實現time_t作爲表示自的秒數的整數或實浮動型(通常是32位或64位整數) Unix時代的開始:1970年1月1日午夜UTC(不包括閏秒)。

7

我不認爲我應該說,他們是等價的,但你可以以這樣的方式轉換t_timeDateTime

int t= 1070390676; // value of time_t in an ordinary integer 
System.DateTime dt= new System.DateTime(1970,1,1).AddSeconds(t); 

而這個例子是 How can I convert date-time data in time_t to C# DateTime class format?

我還應該說,UInt32也用於t_ time,checkcheck DateTime to time_t

+1

最方便的方式 – 2014-12-03 19:45:57

+0

不相關和不正確。 – jheriko 2015-01-14 18:08:23

+0

@jheriko非常感謝您的評論。我已經說過,這不等同。然而,在這裏看到這個答案與一些upvotes,我相信這個答案給了一些人的想法和幫助他們。你能告訴我什麼是不正確的嗎? – Bastardo 2015-01-19 08:07:24

0

Bastardo的解決方案沒有幫助我。我正面臨DST的一個問題,因此需要額外轉換爲當地時間,或由此產生的時間相差一個小時。這是我做的:

return new DateTime(1970, 1, 1).ToLocalTime().AddSeconds(time_t); 
相關問題