how to find the index of same datetime value
11 次查看(过去 30 天)
显示 更早的评论
I have two tables of different sizes of datetime
t = 1251x1 datetime
v = 115x1 datetime with the format of YYYY-MM-DD hh:mmm:ss.SSS as attached below.
I'd like to compare datetime (hh:mmm:ss) without considering .SSS and find the index of the same compared values. Can someone help me with this?
1 个评论
采纳的回答
Khushboo
2022-11-7
Hello,
You can use datestr to convert the datetime to a string (it handles the .SSS part). I am not sure if there is any existing function that can compare different rows of different tables to find rows with identical value in a column. So this is what I have done, I ma sure more efficient solutions might exist:
%assuming the two tables are A,B with first column having the datetime value
A.t = datestr(A.t);
B.t = datestr(B.t);
h1 = height(A);
h2 = height(B);
for i = 1:h1
for j = 1:h2
if strcmp(A{i,1},B{j,1}) == 1
i,j
break
end
end
end
Hope this helps!
4 个评论
Lei Hou
2022-11-18
dateset is now in discourage use. You can use [h,m,s] = hms(datetime) to extract time components and then call floor(s) to remove .SSS data.
更多回答(1 个)
Steven Lord
2022-11-7
Truncate the datetime to the previous whole second then compare.
d = datetime('now');
d.Format = d.Format + ".SSSSSS"
d2 = dateshift(d, 'start', 'second')
d3 = dateshift(d, 'start', 'minute')
2 个评论
Steven Lord
2022-11-7
Let's say I want to check if right now is 6:13 PM (and some number of seconds.) In the example below even though d has those "some number of seconds" d3 trims off those seconds. d is not equal to d4, but d3 is.
d = datetime('now');
d.Format = d.Format + ".SSSSSS"
d2 = dateshift(d, 'start', 'second')
d3 = dateshift(d, 'start', 'minute')
d4 = datetime(2022, 11, 7, 18, 13, 0)
isequal(d4, d3)
isequal(d4, d)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Type Conversion 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!