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)的这个选项