LINUX.ORG.RU

c++ tdatetime to unix timestamp

 , ,


0

1

Добрый всем. Помогите решить задачку. есть данные в формате tdatetime от C++ Borland = 43451.514509 надо перевести в Unix time типа 1547047633.612. На сколько я знаю время начала исчисления у них разные, но на сколько умножить не могу сообразить.

The TDateTime type holds a date and time value.

It is stored as a Double variable, with the date as the integral part, and time as fractional part. The date is stored as the number of days since 30 Dec 1899.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от usaev-rustam

Я не понял, зачем ты умножаешь, если надо прибавлять к целой части. Потом дни перевести в секунды, добавить дробную часть и получится unix timestamp.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от usaev-rustam

Ты ещё в степень возведи. Разницу-то.

anonymous
()
Ответ на: комментарий от DELIRIUM

Переводим с секунды разницу между началом временем исчисления
25550 * 86400 = 2207520000
Переводим в секунды формат TDateTime
43451,514509 * 86400 = 3754210853,5776
Вычитаем разницу
3754210853,5776 - 2207520000 = 1546690853,5776
Переводим Unix time в обычный формат
1546690853,5776 = 05.01.2019 15:20:53

А должно быть в районе 17.12.2018 12:20:53
По времени точно (разница поясов), а вот с днями ошибся

usaev-rustam
() автор топика

extern DELPHI_PACKAGE __int64 __fastcall DateTimeToUnix(const System::TDateTime AValue, bool AInputIsUTC = true);

Serik
()
Ответ на: комментарий от Stil

Ты не поверишь, арифметика - это раздел математики

Gvidon ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.