1

我有以下格式的两个日期:

'16:40:07.875'

'16:41:05.875'

现在我尝试使用 Matlab 以秒为单位计算这两个日期字符串之间的差异。我认为最好的方法是首先将日期字符串解析为日期类型,但我在 Matlab 中找不到任何日期类型。有没有?是否有一个预先构建的函数可以用来计算差异?

4

2 回答 2

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);

在这种情况下Dt58

一些解释:

  • 首先,我使用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);
于 2013-06-07T18:53:04.807 回答
0

这是我使用datenumdatetime的不太聪明且相当长的尝试。我只是提供解决方案来提及一些其他时间/日期 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});
于 2014-10-14T16:36:01.097 回答