How to convert hours, minutes, seconds to seconds?

69 views (last 30 days)
Hi,
How can I return an array with
hh:min:sec
into
seconds?
For example
VarName2(1:5)
ans =
'14:54:25'
'14:54:25'
'14:54:25'
'14:54:26'
'14:54:26'
into a array with seconds?

Accepted Answer

Daniel
Daniel on 16 Oct 2014
Assuming you mean seconds in the day
% initialize variables
NUM_SECONDS_PER_DAY = 86400.0;
timeStrings = {'14:54:25';'14:54:25';'14:54:25';'14:54:26';'14:54:26'};
% convert times to fractional days using datenum
timeFractionalDays = datenum(timeStrings);
% leave only the part with the most recent day fraction
timeDayFraction = mod(timeFractionalDays,1);
% multiply by number of seconds in a day
timeInSeconds = timeDayFraction .* NUM_SECONDS_PER_DAY
This produces the result
timeInSeconds =
1.0e+04 *
5.3665
5.3665
5.3665
5.3666
5.3666
  8 Comments
Daniel
Daniel on 16 Oct 2014
Simply subtract the first value of the answer vector from itself.
% initialize variables
NUM_SECONDS_PER_DAY = 86400.0;
% convert times to fractional days using datenum
timeFractionalDays = datenum(VarName2);
% leave only the part with the most recent day fraction
timeDayFraction = mod(timeFractionalDays,1);
% multiply by number of seconds in a day
timeInSeconds = timeDayFraction .* NUM_SECONDS_PER_DAY;
% find answer starting from first value
timeInSeconds = timeInSeconds - timeInSeconds(1)

Sign in to comment.

More Answers (1)

Stephen23
Stephen23 on 21 Aug 2023
Edited: Stephen23 on 21 Aug 2023
The approach for MATLAB >=R2014b is to use the DURATION class, e.g.:
C = {'14:54:25'; '14:54:25'; '14:54:25'; '14:54:26'; '14:54:26'};
S = seconds(duration(C))
S = 5×1
53665 53665 53665 53666 53666

Categories

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

Tags

Community Treasure Hunt

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

Start Hunting!