Как работать с метками времени Unix в Matlab?
У меня есть некоторые файлы данных с метками времени Unix (в этом случае количество миллисекунд с 1 января 1970 года 00:00 UTC). Я хотел бы преобразовать их в удобные для человека строки даты/времени (например, 31-Aug-2012 11:36:24) в Matlab. Есть ли простой способ сделать это в Matlab, или мне лучше использовать внешнюю библиотеку (например, java.текст.Класса simpledateformat)?
2 ответов
как о
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 ) )
более новые версии MATLAB (проверенные в R2015a) имеют тип datetime, который полезен для работы с датами и временем форматирования. Вы можете преобразовать временные метки UNIX в datetime MATLAB с помощью
dt = datetime( unix_time, 'ConvertFrom', 'posixtime' );
а затем используйте datestr как и раньше для форматирования в виде строки
datestr( dt )