Как преобразовать дату в миллисекундах в DateTime?

#delphi #delphi-10.1-berlin

#delphi #delphi-10.1-берлин

Вопрос:

У меня есть это время с сервера: 1475245457452 Дата и время для этого: 30.9.2016, 16:24:17

Как я могу преобразовать этот 1475245457452 в Delphi в правильные дату и время?

Комментарии:

1. Вы проверили DateUtils единицу измерения?

2. Я переназначил ваш вопрос, чтобы угадать вашу версию. Нет XE10. Я предполагаю, что Берлин, но это не будет иметь значения в любом случае.

3. Я исправил заголовок, чтобы читать миллисекунды вместо микросекунд , поскольку указанное вами значение действительно равно миллисекундам (из эпохи Unix).

Ответ №1:

Вы не сказали, но я могу догадаться, что это количество на самом деле составляет миллисекунды, измеренные с эпохи Unix. Так что конвертируйте их с помощью UnixToDateTime from the System.DateUtils unit:

 {$APPTYPE CONSOLE}

uses
  System.SysUtils,
  System.DateUtils;

begin
  Writeln(DateTimeToStr(UnixToDateTime(1475245457452 div 1000)));
end.
  

Я разделил на 1000 , чтобы преобразовать в секунды, потому UnixToDateTime что ожидает время в секундах, а не в миллисекундах.
Если вы хотите сохранить миллисекундную часть времени, вы можете легко увеличить значение даты и времени на оставшуюся часть деления.

Важно подчеркнуть, что время всегда измеряется в некоторой системе единиц и относительно некоторого начала координат или эпохи. Никогда не бывает достаточно знать только значение, но вы должны знать как единицы измерения, так и эпоху. Да, часто это достаточно легко угадать, но обычно было бы лучше прочитать спецификацию программного обеспечения, производящего значение времени, чтобы окончательно выяснить, что это за значение.

Комментарии:

1. Спасибо! Это решение.

2. @Pascal если это правильное решение, пожалуйста, отметьте ответ как правильный