我有一些带有 Unix 时间戳的数据文件(在这种情况下,自 1970 年 1 月 1 日 00:00 UTC 以来的毫秒数)。我想在 Matlab 中将这些转换为人类友好的日期/时间字符串(例如 31-Aug-2012 11:36:24)。在 Matlab 中是否有一种简单的方法可以做到这一点,或者我最好使用外部库(例如 java.text.SimpleDateFormat)?
问问题
47663 次
2 回答
34
怎么样
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 ) )
于 2012-08-31T08:43:35.257 回答
31
较新版本的 MATLAB(在 R2015a 中验证)具有 datetime 类型,可用于处理和格式化日期和时间。您可以将 UNIX 时间戳转换为 MATLAB 日期时间
dt = datetime( unix_time, 'ConvertFrom', 'posixtime' );
然后像以前一样使用 datestr 格式化为字符串
datestr( dt )
于 2015-08-05T16:18:18.367 回答