我有以下格式的两个日期:
'16:40:07.875'
'16:41:05.875'
现在我尝试使用 Matlab 以秒为单位计算这两个日期字符串之间的差异。我认为最好的方法是首先将日期字符串解析为日期类型,但我在 Matlab 中找不到任何日期类型。有没有?是否有一个预先构建的函数可以用来计算差异?
我有以下格式的两个日期:
'16:40:07.875'
'16:41:05.875'
现在我尝试使用 Matlab 以秒为单位计算这两个日期字符串之间的差异。我认为最好的方法是首先将日期字符串解析为日期类型,但我在 Matlab 中找不到任何日期类型。有没有?是否有一个预先构建的函数可以用来计算差异?
以下是您的操作方法:
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
。
一些解释:
编辑
正如Oleg Komarov指出的那样,这就足够了:
t1 = datevec(T1,'HH:MM:SS.FFF')
t2 = datevec(T2,'HH:MM:SS.FFF')
Dt = etime(t2,t1);
这是我使用datenum和datetime的不太聪明且相当长的尝试。我只是提供解决方案来提及一些其他时间/日期 API。
我正在使用diff将差异作为持续时间返回。然后我需要将 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});