Matlab:如何计算两个日期字符串之间的秒数?

时间:2013-06-07 18:34:44

标签: matlab

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

'16:40:07.875'

'16:41:05.875'

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

2 个答案:

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

在这种情况下,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);

答案 1 :(得分:0)

这是我使用datenumdatetime的不那么聪明且相当长的尝试。 我只是提供解决方案来提及其他一些时间/日期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});