Find datetime in a vector

Hello,
I want to find the index of two times that belong on a colum with a bunch of timedates
t1 = datetime('10-09-2018 00:00:00','Format','dd-MM-uuuu HH:mm:ss')
t2 = datetime('28-09-2018 23:59:00','Format','dd-MM-uuuu HH:mm:ss')
idx_t1 = find(t_ref==t1)
idx_t2 = find(t_ref==t2)
idx_t1 should be 1020961 and idx_t2 1048320, but the results are empty
Thanks

 Accepted Answer

KSSV
KSSV on 16 Aug 2019
Edited: KSSV on 16 Aug 2019
Use ismember
Or
idx = knnsearch(datenum(t_ref),datenum(t1)) ;
t_ref(idx)
t1
Or
dt = abs((datenum(t_ref)-datenum(t1))) ;
[val,idx] = min(dt) ;
t_ref(idx)

4 Comments

with ismember it gives me 0, but i know that those dates are in t_ref at index 1020961 and 1048320 respectively.
Thanks for the knnsearch, that seems to work and give me the index.
Any idea with the other two functions doesnt work?
Any idea with the other two functions doesnt work?
Because, despite your statement, neither t1 nor t2 are present within t_ref. Note that the 'Format' property has no influence on the actual content of the datetime, so if they differ at the millisecond level, == will return false, even though you're not displaying the milliseconds.
If you want to get rid of the milliseconds:
t_ref.Second = floor(t_ref.Second); %or round if you prefer rounding to the nearest second
oh ok, I though he would ignore the miliseconds due to the format I specified.
thanks

Sign in to comment.

More Answers (0)

Asked:

on 16 Aug 2019

Commented:

on 16 Aug 2019

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!