Есть код C:
time1=((double)dt1-25569.0)*86400.0;
он конвертируется из TDateTime (VCL) в формат time_t в секундах, поэтому, наконец, мне нужно получить формат time_t из .NET DateTime
о time_t:
Почти всегда ожидается, что это целое значение, представляющее количество секунд, прошедших с 00:00 1 января 1970 г. по всемирному координированному времени. Этот связано с историческими причинами, так как он соответствует unix timestamp, но широко реализована в библиотеках C во всех платформ.
Итак, чтобы получить секунды в .NET, я делаю это (F #):
let seconds(dt : DateTime) =
(dt.Ticks/10000000L)
или на C # (чтобы использовать более популярный тег C #):
Int64 seonds(DateTime dt)
{ return (dt.Ticks/ ((Int64)10000000)); }
// hope it works, but please correct if I mistaken
Насколько я понимаю, пора из 12:00:00 1 января 0001 UTC.
Итак, чтобы использовать формат time_t, мне нужно добавить 1970 лет в секундах.
Итак, последняя функция должна быть (F #):
let seconds(dt : DateTime) =
(dt.Ticks/10000000L) + 31536000*1970
C #:
Int64 seonds(DateTime dt)
{ return (dt.Ticks/ ((Int64)10000000)) + 31536000*1970; }
Я действительно боюсь, что ошибся здесь. Пожалуйста, проверьте это решение! (проверьте, правильно ли это сделано)
Спасибо