我有以下格式的两个日期:
'16:40:07.875'
'16:41:05.875'
现在我尝试使用Matlab计算这两个日期字符串之间的差异,以秒为单位。我认为最好的方法是首先将日期字符串解析为日期类型,但我在Matlab中找不到任何日期类型。有没有?是否有预先构建的函数,然后我可以使用它来计算差异?
答案 0 :(得分:6)
以下是您可以这样做的方法:
T1 = '16:40:07.875';
T2 = '16:41:05.875';
T3 = clock;
str1 = [num2str(T3(1:3)),' ',T1];
str2 = [num2str(T3(1:3)),' ',T2];
t1 = datevec(str1,'yyyy mm dd HH:MM:SS.FFF')
t2 = datevec(str2,'yyyy mm dd HH:MM:SS.FFF')
Dt = etime(t2,t1);
在这种情况下,Dt
为58
。
一些解释:
clock
获取今天的日期字符串作为年/月/日输入的假人datevec
来获得正确的日期向量格式。注意SS.FFF
来解决毫秒数。 etime
用于计算两个日期向量之间的差值。 修改强>
正如Oleg Komarov指出的那样,这就足够了:
t1 = datevec(T1,'HH:MM:SS.FFF')
t2 = datevec(T2,'HH:MM:SS.FFF')
Dt = etime(t2,t1);
答案 1 :(得分:0)
这是我使用datenum和datetime的不那么聪明且相当长的尝试。 我只是提供解决方案来提及其他一些时间/日期API。
我正在使用diff将差异作为duration返回。然后我需要将HH:MM:SS持续时间转换为仅持续时间秒。最后,我拆分了字符串并返回第一个令牌。
T1 = '16:40:07.875';
T2 = '16:41:05.875';
dt1 = datetime(datenum(T1,'HH:MM:SS.FFF'),'ConvertFrom','datenum');
dt2 = datetime(datenum(T2,'HH:MM:SS.FFF'),'ConvertFrom','datenum');
timestamps = [dt1 dt2];
seconds_text = char(duration(diff(timestamps),'Format','s'));
items =strsplit(seconds_text);
Dt = str2num(items{1,1});