2011-06-08 89 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); 
相关问题