Time interval of a continuous record
Show older comments
I would like to find the dureation between the following times. This is piece of a group of data called A.
NaN
22:00:00
23:00:00
00:00:00
01:00:00
NaN
16:00:00
17:00:00
NaN
06:00:00
NaN
14:00:00
15:00:00
16:00:00
NaN
The duration is one hour so it should display as:
NaN
01:00:00
01:00:00
01:00:00
01:00:00
NaN
01:00:00
01:00:00
NaN
01:00:00
NaN
01:00:00
01:00:00
01:00:00
NaN
3 Comments
Steven Lord
on 31 Mar 2022
Why is the difference between 23:00:00 and 00:00:00 equal to 01:00:00 and not -23:00:00 or 25:00:00?
You're assuming that your time data is increasing, that they implicitly have dates associated with them (not necessary absolute dates like March 31st but relative dates "today" and "tomorrow".) Is that correct? How do you know that (in the example I called out) 00:00:00 is 00:00:00 "tomorrow" relative to 23:00:00 "today" and not 00:00:00 "two days from now"?
Queena Edwards
on 31 Mar 2022
Siddharth Bhutiya
on 1 Apr 2022
You mentioned that this is just an example, so in your original data, what is the data type of these values? Are these stored as durations or datetimes? If you are storing these as durations then as Steven mentioned above you are using durations to represents datetimes with some implicit assumptions. This will always mean you would have to do more work to get the right behavior. On the other hand if these were datetimes, then this becomes a simple call to diff
d
d =
15×1 datetime array
NaT
04-01-2022 22:00:00
04-01-2022 23:00:00
04-02-2022 00:00:00
04-02-2022 01:00:00
NaT
04-01-2022 16:00:00
04-01-2022 17:00:00
NaT
04-01-2022 06:00:00
NaT
04-01-2022 14:00:00
04-01-2022 15:00:00
04-01-2022 16:00:00
NaT
diff(d)
ans =
14×1 duration array
NaN
01:00:00
01:00:00
01:00:00
NaN
NaN
01:00:00
NaN
NaN
NaN
NaN
01:00:00
01:00:00
NaN
Answers (0)
Categories
Find more on NaNs in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!