将时间转换为毫秒?

时间:2014-10-28 16:07:57

标签: matlab

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

这是日期如何'00:26:16:926'的示例,那么,这是0小时26分16秒和926毫秒。转换这个时间之后,我需要得到的毫秒数,比如我上面给出的时间为1576926毫秒。提前谢谢。

4 个答案:

答案 0 :(得分:5)

一种解决方案可能是:

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

结果:

 1576926

答案 1 :(得分:5)

为什么不尝试使用datevecdatevec旨在接收各种时间和日期字符串,它会解析字符串并为您提供有用的信息。无需使用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输出的第六个元素,所以你要做的就是将第四个元素转换为第六个元素到几毫秒并将它们全部加起来,这就是上面所做的。如果你没有指定实际的日期,它只是默认为当年的1月1日...但我们还没有使用日期...我们只是想要时间!


datevec的美妙之处在于它可以接受多个字符串,因此您不仅限于单个输入。只需将所有字符串放入单个单元格数组中,然后按以下方式使用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

答案 2 :(得分: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

答案 3 :(得分:0)

您可以使用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