How do to get a specific time from datetime format in Matlab?
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Kofial
am 11 Nov. 2020
Kommentiert: Kofial
am 12 Nov. 2020
I have these data:
x=(17-Apr-2020 06:59:00,17-Apr-2020 07:00:00,17-Apr-2020 07:01:00,17-Apr-2020,07:02:0017-Apr-2020,07:03:00)
y=(06:58:30,17-Apr-2020 06:59:30,17-Apr-2020 07:00:30,17-Apr-2020 07:01:30,17-Apr-2020 07:02:30,17-Apr-2020 07:03:30)
Both times (x,y) are in the datetime format).
To get the time for x from 07:00:00 till the end I do this:
interpolation_time = (x(420):minutes(1):x(end));
For y I need it from 07:00:30 till the end. How can I do it? It has a different timestamp.
Thank you!
Akzeptierte Antwort
Walter Roberson
am 11 Nov. 2020
Bearbeitet: Walter Roberson
am 11 Nov. 2020
[xh, xm, xs] = hms(x);
xidx = find(xh >= 7 & xm >= 0, 1);
[yh, ym, ys] = hms(y);
yidx = find(yh >= 7 & ym >= 0 & ys >= 30, 1);
selected_x = x(xidx:end);
selected_y = y(yidx:end);
Note here that this code is perfectly happy if the dates do not match at all, and if the entries are out of order. Your problem definition involved finding the first entry that meets a particular time-based criteria that ignores dates.
Perhaps you should use isbetween() ?
See also dateshift() -- for example
xbase = dateshift(x(1), 'start', 'day');
dx = x - xbase;
dy = y - xbase;
maskx = dx >= hours(7);
masky = dy >= hours(7) + seconds(30);
1 Kommentar
Steven Lord
am 11 Nov. 2020
You can compute dx and dy without computing xbase using the timeofday function for datetime arrays.
dt = datetime('now') + hours(48*randn(10, 1)) + minutes(60*randn(10, 1));
td = timeofday(dt);
results = table(dt, td, 'VariableNames', ["Date and time", "Time since midnight"])
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Dates and Time finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!