Подтвердить что ты не робот

Как работать с отметками времени Unix в Matlab?

У меня есть файлы данных с отметками времени Unix (в этом случае количество миллисекунд с 1 января 1970 года 00:00 по UTC). Я хотел бы преобразовать их в удобные для человека строки даты/времени (например, 31 августа 2012 года 11:36:24) в Matlab. Есть ли простой способ сделать это в Matlab, или мне лучше использовать внешнюю библиотеку (например, java.text.SimpleDateFormat)?

4b9b3361

Ответ 1

Как насчет

date = datestr(unix_time/86400 + datenum(1970,1,1))

если unix_time задано в секундах, unix_time/86400 даст количество дней с 1 января 1970 года. Добавьте к этому смещение, используемое Matlab datenum (datenum(0000,1,1) == 1), и у вас есть количество дней с 1 января 0000 года. Это можно легко преобразовать в удобочитаемую форму с помощью Matlab datestr.

Если у вас миллисекунды, просто используйте

date = datestr(unix_time/86400/1000 + datenum(1970,1,1))

Обернутые функции, они будут

function dn = unixtime_to_datenum( unix_time )
    dn = unix_time/86400 + 719529;         %# == datenum(1970,1,1)
end

function dn = unixtime_in_ms_to_datenum( unix_time_ms )
    dn = unix_time_ms/86400000 + 719529;   %# == datenum(1970,1,1)
end

datestr( unixtime_to_datenum( unix_time ) )

Ответ 2

Более поздние версии MATLAB (проверенные в R2015a) имеют тип datetime, который полезен для работы с датами и временем форматирования. Вы можете преобразовать временные метки UNIX в дату и время MATLAB с помощью

dt = datetime( unix_time, 'ConvertFrom', 'posixtime' );

а затем использовать datestr как прежде для форматирования в виде строки

datestr( dt )