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

 Risposta accettata

KSSV
KSSV il 16 Ago 2019
Modificato: KSSV il 16 Ago 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 Commenti

Tiago Dias
Tiago Dias il 16 Ago 2019
with ismember it gives me 0, but i know that those dates are in t_ref at index 1020961 and 1048320 respectively.
Tiago Dias
Tiago Dias il 16 Ago 2019
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
Tiago Dias
Tiago Dias il 16 Ago 2019
oh ok, I though he would ignore the miliseconds due to the format I specified.
thanks

Accedi per commentare.

Più risposte (0)

Richiesto:

il 16 Ago 2019

Commentato:

il 16 Ago 2019

Community Treasure Hunt

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

Start Hunting!

Translated by