首页 文章

如何在Matlab中使用Unix时间戳?

提问于
浏览
12

我有一些带有Unix时间戳的数据文件(在这种情况下,自1970年1月1日00:00 00:00以来的毫秒数) . 我想在Matlab中将这些转换为人性化的日期/时间字符串(例如,2012年8月31日11:36:24) . 有没有一种简单的方法在Matlab中执行此操作,或者我最好使用外部库(例如java.text.SimpleDateFormat)?

2 回答

  • 29

    怎么样

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

    如果以秒为单位给出 unix_timeunix_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 ) )
    
  • 24

    较新版本的MATLAB(在R2015a中验证)具有日期时间类型,可用于处理和格式化日期和时间 . 您可以使用UNIX将UNIX时间戳转换为MATLAB日期时间

    dt = datetime( unix_time, 'ConvertFrom', 'posixtime' );
    

    然后像以前一样使用datestr格式化为字符串

    datestr( dt )
    

相关问题