我有一些带有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的datenum
(datenum(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 ) )