C# c的时间与c的等效值是多少#

C# c的时间与c的等效值是多少#,c#,c,time,types,C#,C,Time,Types,有一个来自用c编写的dll的本机方法,它接受类型为time\t的参数。 此参数是否可以使用C#uint或ulong?根据需要,您可以使用整数(Int32或Int64) Unix和POSIX兼容系统将时间实现为整数或实浮点类型(通常为32位或64位整数),表示自Unix纪元开始以来的秒数:1970年1月1日午夜UTC(不计算闰秒).取决于编译DLL所依据的标准C头文件中如何定义时间 如果time\u t为64位,则C的等效值为long 如果time\u t是32位的,那么它就有2038年的bug,

有一个来自用c编写的dll的本机方法,它接受类型为time\t的参数。 此参数是否可以使用C#uint或ulong?

根据需要,您可以使用
整数(Int32或Int64)


Unix和POSIX兼容系统将时间实现为整数或实浮点类型(通常为32位或64位整数),表示自Unix纪元开始以来的秒数:1970年1月1日午夜UTC(不计算闰秒).

取决于编译DLL所依据的标准C头文件中如何定义时间

如果
time\u t
为64位,则C的等效值为
long


如果
time\u t
是32位的,那么它就有2038年的bug,你应该询问编写DLL的人是否有无bug版本。

我不认为它们是等效的,但是你可以通过以下方式将
tu time
转换为
DateTime

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


我还应该说,
UInt32
也用于时间。我面临着DST的问题,因此需要额外转换为本地时间,或者结果时间相差一小时。我就是这么做的:

return new DateTime(1970, 1, 1).ToLocalTime().AddSeconds(time_t);

最方便way@jheriko非常感谢您的评论。我已经说过,这是不等价的。然而,看到这个答案,我相信这个答案给了一些人一些想法并帮助了他们。你能告诉我什么不对吗?对不起,我太矮了。我一直在寻找这个问题的解决方案,最后使用p/invoke从msvcrt调用,但我的原始观点本可以更好地表达为“实际上不起作用”。展示一些几乎有效的东西很有趣,但这不是答案。这与“时间是多少?”的问题也相去甚远,这个问题本质上就是这里要问的问题。@jheriko谢谢你的解释,对不起,在这个例子中哪一部分不起作用?在这种情况下,安东克说“最方便的方式”是在讽刺吗?对我来说,它只起到了这样的作用:返回新的日期时间(1970,1,1).AddSeconds(time_t).ToLocalTime();或者更好的是,
newdatetime(1970,1,1,0,0,0,DateTimeKind.Local)。AddSeconds(time)
Good call。如果你愿意的话,我会编辑我的答案来使用它。