что эквивалентно c time_t для c # - PullRequest
6 голосов
/ 08 июня 2011

Существует собственный метод из dll, написанный на c, который принимает параметр типа time_t. Можно ли использовать C # uint или ulong для этого параметра?

Ответы [ 4 ]

7 голосов
/ 08 июня 2011

Зависит от того, как time_t было определено в заголовочных файлах Standard C, с которыми была скомпилирована DLL.

Если time_t 64-битный, эквивалент C # равен long.

Если time_t 32-битный, то он имеет ошибку 2038 года, и вы должны спросить любого, кто написал DLL, для версии без ошибок.

7 голосов
/ 08 июня 2011

Не думаю, что мне следует говорить, что они эквивалентны, но вы можете конвертировать t_time в DateTime таким образом:

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

И этот пример из Как я могу преобразовать данные даты и времени в time_t в формат класса C # DateTime?

Я также должен сказать, что UInt32 также используется для t_ time. Проверьте DateTime to time_t

2 голосов
/ 08 июня 2011

Согласно статье Википедии о Time_t вы можете использовать integer (Int32 or Int64)

Системы, совместимые с Unix и POSIX, реализуют time_t как целочисленный или вещественно-плавающий тип (обычно 32- или 64-разрядное целое), который представляет количество секунд с начала эпохи Unix: полночь UTC января 1, 1970 (не считая високосных секунд).

0 голосов
/ 01 марта 2015

Решение Бастардо мне не помогло. У меня возникла проблема с DST, поэтому потребовалось дополнительное преобразование в местное время, или итоговое время отличалось на один час. Вот что я делаю:

return new DateTime(1970, 1, 1).ToLocalTime().AddSeconds(time_t);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...