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

Matlab:如何计算两个日期字符串之间的秒数?,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 =

我有两个日期,格式如下:

'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

一些解释:

  • 首先,我使用todays day字符串作为年/月/日输入的虚拟对象
  • 其次,我使用它来获得正确的日期向量格式。注意
    SS.FFF
    来解析毫秒数
  • 第三,用于计算两个日期向量之间的增量
编辑
如前所述,这就足够了:

t1 = datevec(T1,'HH:MM:SS.FFF')
t2 = datevec(T2,'HH:MM:SS.FFF')

Dt = etime(t2,t1);

以下是您如何做到这一点:

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

一些解释:

  • 首先,我使用todays day字符串作为年/月/日输入的虚拟对象
  • 其次,我使用它来获得正确的日期向量格式。注意
    SS.FFF
    来解析毫秒数
  • 第三,用于计算两个日期向量之间的增量
编辑
如前所述,这就足够了:

t1 = datevec(T1,'HH:MM:SS.FFF')
t2 = datevec(T2,'HH:MM:SS.FFF')

Dt = etime(t2,t1);

这是我不太聪明的尝试,我尝试了很久。 我只是提供了一些解决方案来提及其他一些时间/日期API

我使用返回差值作为一个值。然后我需要将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});

这是我不太聪明的尝试,我尝试了很久。 我只是提供了一些解决方案来提及其他一些时间/日期API

我使用返回差值作为一个值。然后我需要将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});

你试过了吗?是的,但为此我首先需要一个日期向量,我不知道如何从字符串中获取日期向量。你试过了吗?是的,但我首先需要一个日期向量,我不知道如何从字符串中获取日期向量。实际上,你不需要
时钟()
日期向量()
处理好了。@Schorsch你刚刚救了我的救命恩人。谢谢你做的这件事。正常的datevec没有显示这一部分-你知道为什么吗?cheers manI有毫秒分辨率的时间戳,在datevec函数的matlab网页中,我没有看到毫秒(FFF)的这个选项,实际上你不需要
clock()
datevec()
来处理它。@Schorsch你刚刚救了我的救命恩人。谢谢你做的这件事。正常的datevec没有显示这一部分-你知道为什么吗?cheers manI有毫秒分辨率的时间戳,在datevec函数的matlab网页中,我没有看到毫秒(FFF)的这个选项