我有一些带有Unix时间戳的数据文件(在本例中,是自1970年1月1日00:00 UTC起的毫秒数)我想在Matlab中将这些转换为对人类友好的日期/时间字符串(例如,2012年8月31日11:36:24)有没有一种简单的方法可以在Matlab中实现,或者我最好使用一个外部库(例如java.text.SimpleDateFormat)?

最佳答案

怎么样

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

如果unix_time以秒为单位,unix_time/86400将给出自1970年1月1日起的天数再加上Matlab的datenumdatenum(0000,1,1) == 1)所使用的偏移量,就有了0000年1月1日以来的天数这可以通过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 ) )

10-05 21:43