Converting hh:mm:ss into seconds

Hi all,
I want to read the vectors which are hh:mm:ss (14:35:59.812) format and convert it to seconds. How can I do this in matlab?
Best

 Réponse acceptée

Andreas Goser
Andreas Goser le 20 Jan 2012

6 votes

Is this what you are looking for?
t='14:35:59.812';
[Y, M, D, H, MN, S] = datevec(t);
H*3600+MN*60+S

4 commentaires

tethys
tethys le 20 Jan 2012
Modifié(e) : per isakson le 3 Déc 2016
Thanks for the answer,
My problem was about reading the data as HH:MM:SS.FFF, and my code was:
clear all
clc
[c,pathc]=uigetfile({'*.txt'},'Select the data','Desktop');
file=[pathc c];
A = importdata(file, ' ',5);
dt = datestr(A,'HH:MM:SS,FFF')
and it was reading t='14:35:59.812' as t='14:35:59.000', but now I realized my problem, and solved it.
Thanks again :)
qiang zhang
qiang zhang le 3 Déc 2016
I have the same problem. the datestr does not read miliseconds in this format. could you explain how you solve this?
On R2016a I get the expected result
>> dt = datestr( now,'HH:MM:SS,FFF')
dt =
12:58:26,797
I want to convert Time column ( HH:MM:SS) to min, there is a direct command time2num but it requires toolbox and it's paid.So without using time2num how can I convert into minutes. I tried with datetime also but I got error.
table=readtable('sample.csv'):
times = datetime(table.Time,'InputFormat','HH:mm:ss:SSS');
times = hour(times).*60 + minute(times) + second(times)./60;

Connectez-vous pour commenter.

Plus de réponses (3)

per isakson
per isakson le 20 Jan 2012

2 votes

The first and the last cell returns the result I think you are looking for. See help on DATENUM
datenum( '14:35:59.812', 'HH:MM:SS.FFF' ) .* (24*60*60) - ...
datenum( '00:00:00.000', 'HH:MM:SS.FFF' ) .* (24*60*60)
datestr( datenum( '00:00:00.000', 'HH:MM:SS.FFF' ), 'yyyy-mm-dd' )
datenum( '14:35:59.812', 'HH:MM:SS.FFF', 0 ) .* (24*60*60)

1 commentaire

tethys
tethys le 20 Jan 2012
Thansk for the answer, it is very useful information:)

Connectez-vous pour commenter.

Peter Seibold
Peter Seibold le 18 Avr 2021
About 100 times faster is:
t='14:35:59.812';
seconds=sum(sscanf(t,'%f:%f:%f').*[3600;60;1]);
t='14:35:59.812';
F = 'hh:mm:ss.SSS';
du = duration(t, 'InputFormat', F, 'Format', F)
du = duration
14:35:59.812
format longg % To make s look nicer
s = seconds(du)
s =
52559.812

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by