我有一些带有Unix时间戳的数据文件(在这种情况下,是自1970年1月1日00:00 00:00以来的毫秒数)。我想在Matlab中将这些转换为人性化的日期/时间字符串(例如,2012年8月31日11:36:24)。有没有一种简单的方法在Matlab中执行此操作,或者我最好使用外部库(例如java.text.SimpleDateFormat)?
答案 0 :(得分:30)
怎么样
date = datestr(unix_time/86400 + datenum(1970,1,1))
如果以秒为单位给出unix_time
,则unix_time/86400
将给出自1970年1月1日以来的天数。再添加Matlab使用的偏移量datenum
({ {1}}),你有自0000年1月1日以来的天数。这可以很容易地被Matlab的datenum(0000,1,1) == 1
转换成人类可读的形式。
如果你有毫秒,只需使用
datestr
包含在函数中,这些将是
date = datestr(unix_time/86400/1000 + datenum(1970,1,1))
答案 1 :(得分:27)
较新版本的MATLAB(在R2015a中验证)具有日期时间类型,可用于处理和格式化日期和时间。您可以使用
将UNIX时间戳转换为MATLAB日期时间dt = datetime( unix_time, 'ConvertFrom', 'posixtime' );
然后像以前一样使用datestr格式化为字符串
datestr( dt )