# Duration in double between two datenum

6 views (last 30 days)
Luis Ruiz on 7 Sep 2018
Commented: Peter Perkins on 12 Sep 2018
I have two dates given in text format, I want to have the real duration in seconds between the two values.
The answer is -24, and I can do it parsing the strings. But does MATLAB have a function to do it nice and quick?
If I do the following the answer is not a -24 that I can use as a double:
datenum('2018-09-07 18:36:05.079')-datenum('2018-09-07 18:36:29.079')
I need this time for a Simulink simulation. For example, I might need the duration in seconds between two days.
Stephen23 on 7 Sep 2018
Luis Ruiz on 10 Sep 2018
I edited my question to match the answers.

Stephen23 on 7 Sep 2018
Edited: Stephen23 on 7 Sep 2018
To get seconds simply multiply the days by 60*60*24:
>> F = 'yyyy-mm-dd HH:MM:SS.FFF';
>> D = datenum('2018-09-07 18:36:05.079',F)-datenum('2018-09-07 18:36:29.079',F);
>> D*60*60*24
ans = -24.000
Luis Ruiz on 10 Sep 2018
Edited: Luis Ruiz on 10 Sep 2018
This one seems to be the right answer, but then, does it mean that operations between two datenum values are always in days?
Stephen23 on 10 Sep 2018
@Luis Ruiz: yes, datenum always returns days. But the conversion to seconds is trivial, as my answer shows.

Peter Perkins on 7 Sep 2018
If possible, don't use datenum. Use datetimes:
>> fmt = 'yyyy-MM-dd HH:mm:ss.SSS';
>> dur = datetime('2018-09-07 18:36:05.079','Format',fmt) - datetime('2018-09-07 18:36:29.079','Format',fmt)
dur =
duration
-00:00:24
>> dur.Format = 's'
dur =
duration
-24 sec
##### 3 CommentsShow 1 older commentHide 1 older comment
James Tursa on 7 Sep 2018
To turn it into a double, e.g.
seconds(dur)
Peter Perkins on 12 Sep 2018
As James says, you can convert, but the point of duration is that you may not need a number. duration supports all kinds of time arithmetic. Hard to know if that's possible in your case.

Image Analyst on 7 Sep 2018
Edited: Image Analyst on 10 Sep 2018
Try the etime() function.
t1 = datevec('2018-09-08 18:36:05.079','yyyy-mm-dd HH:MM:SS.FFF')
t2 = datevec('2018-09-07 18:36:29.079','yyyy-mm-dd HH:MM:SS.FFF')
elapsedTime = etime(t1, t2) % Results in seconds.

### Categories

Find more on Dates and Time in Help Center and File Exchange

R2018a

### Community Treasure Hunt

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

Start Hunting!