首页 文章

将时间转换为毫秒?

提问于
浏览
2

我的数据中有一些 string 格式的时间 . 任何人都可以帮我在Matlab中将这个日期转换为毫秒 .

这是日期看起来像 '00:26:16:926' 的一个例子,那么,这是0小时26分16秒和926毫秒 . 转换这个时间之后,我需要得到的毫秒数,比如我上面给出的时间为1576926毫秒 . 先感谢您 .

4 回答

  • 0

    为什么不尝试使用datevec呢? datevec 旨在接收各种时间和日期字符串,它会解析字符串并为您提供有用的信息 . 没有必要使用 regexp 或以任何方式拆分你的字符串 . 这是一个简单的例子:

    [~,~,~,hours,minutes,seconds] = datevec('00:26:16:926', 'HH:MM:SS:FFF');
    out = 1000*(3600*hours + 60*minutes + seconds);
    
    out = 
    
    1576926
    

    在这种格式中, datevec 的输出将是一个6元素向量,分别输出年,月,日,小时,分钟和秒 . 毫秒分辨率将被添加到 datevec 's output, so all you have to do is convert the fourth to sixth elements into milliseconds and add them all up, which is what is done above. If you don'的第六个元素t指定实际日期,它默认为当前年份的1月1日...但我们还没有使用日期...我们只是想要时间!


    datevec 的美妙之处在于它可以接受 multiple 字符串,因此您不仅限于单个输入 . 只需将所有字符串放入单个单元格数组中,然后按以下方式使用 datevec

    times = {'00:26:16:926','00:27:16:926', '00:28:16:926'};
    [~,~,~,hours,minutes,seconds] = datevec(times, 'HH:MM:SS:FFF');
    out = 1000*(3600*hours + 60*minutes + seconds);
    
    out =
    
        1576926
        1636926
        1696926
    
  • 5

    一种解决方案可能是:

    timeString = '00:26:16:926';
    cellfun(@(x)str2num(x),regexp(timeString,':','split'))*[3600000;60000;1000;1]
    

    结果:

    1576926
    
  • 1

    假设您的日期字符串一致地以该格式出现,您可以使用如下这样简单的内容:

    test = '00:26:16:926';
    H = str2num(test(1:2)); % hours
    M = str2num(test(4:5)); % minutes
    S = str2num(test(7:8)); % seconds
    MS = str2num(test(10:12)); % milliseconds
    totalMS = MS + 1000*S + 1000*60*M + 1000*60*60*H;
    

    输出:

    1576926.00
    
  • 5

    您可以使用 datevec 进行转换和点积来转换带有日期甚至向量的单个字符串

    a = ['00:26:16:926' ; '08:42:12:936']
    datevec(a,'HH:MM:SS:FFF') * [0 0 0 3600e3 60e3 1e3]'
    
    ans =
    
         1576926
        31332936
    

相关问题