Преобразование эпохи в дату в Matlab с долями секунды - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть массив времен Epoch, которые включают дробные (наносекунды).Я просмотрел Преобразование эпохи в дату в Matlab , но все еще не могу преобразовать в правильную дату.Я должен пропустить что-то простое.

Пример данных: 1548348497.191261

Я использую код по ссылке выше.

time_unix_nanos = 1548348497.191261;
millis = round(time_unix_nanos);
nanos = time_unix_nanos - 1e6 * millis;
time_matlab = round(864e5 * (millis - datenum('1970', 'yyyy')));
s = [datestr(time_matlab, 'yyyy-mm-dd hh:mm:ss.FFF;), num2str(nanos)];

fprintf('s: = %f\n',s);

Два желаемых выхода Полный формат даты: гггг-мм-дд ЧЧ: мм: ss.SSS Просто формат времени: ЧЧ: мм: ss.SSS

Заранее спасибо!

1 Ответ

0 голосов
/ 01 февраля 2019

Кажется, вы ошиблись при преобразовании времени unixtime в время matlab с временем matlab в unixtime.

time_unix_nanos = 1548348497.191261;
millis = round(time_unix_nanos / 1e6);  % You had also a /1e6 missing here
nanos = time_unix_nanos - 1e6 * millis;
% The following line converts unix time to matlab time. The line you used was doing the opposite
time_matlab = datenum('1970', 'yyyy') + millis / 864e5;

% First desired date format
s1 = [datestr(time_matlab, 'yyyymmdd HH:MM:SS.FFF;'), num2str(nanos)]
% Second desired date format
s2 = [datestr(time_matlab, 'HH:MM:SS.FFF;'), num2str(nanos)]

дает

>> s1
    '19700101 00:00:01.548;348497.1913'


>> s2
    '00:00:01.548;348497.1913'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...