Load date/time data and being recognized for further time related subtraction/addtions
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Ivy Chen
el 8 de Ag. de 2017
Comentada: Ivy Chen
el 8 de Ag. de 2017
I have a text data file, which includes timestamp like 20150727084239.533 which represent 2015-07-27 08:42:39.533. And I have two questions when dealing with these. 1. how can I use textscan and have it recognized as time? I have the current code shown below, and it only load into the data array as numbers.
Load Vehicle A_0727_L2 Timestamp
filename='Vehicle A_0727_1200.txt';
fid=fopen(filename,'r');
for k=1:2;
tline=fgetl(fid);
end
timestamp1200=zeros(1,7931);
t=1;
while tline~=-1
datestr=regexp(tline,'(?<=STime="20150727).*(?=" ETime)','match');
tempdata2=textscan(datestr{1},'%f');
timestamp1200(:,t)=tempdata2{1};
t=t+1;
tline = fgetl(fid);
end
fclose all;
When I use %{HH:mm:ss.FFF}D to replace %f, system returns the following errors:
Error using textscan
Unable to read the DATETIME data with the format 'HH:mm:ss.FFF'. If the
data is not a time, use %q to get string data.
Error in C_July27_L2_Data (line 39)
tempdata2=textscan(datestr{1},'%{HH:mm:ss.FFF}D');
2. How do I use the load time to perform subtraction like 463 seconds from the loaded data, etc.
thanks!
0 comentarios
Respuesta aceptada
Derick Yang
el 8 de Ag. de 2017
Try using the datetime function instead of textscan. In your case, you can use the following format:
tempdata2 = datetime(datestr{1}, 'InputFormat', 'yyyyMMddHHmmss.SSS')
Note that this will give you a datetime object. With a datetime object you can perform date arithmetic. To subtract from your date object:
tempdata2 - seconds(463).
3 comentarios
Derick Yang
el 8 de Ag. de 2017
This error means you need to reference datestr as a matrix rather than a cell array, using parentheses. Instead of datestr{1}, use datestr(1)
Más respuestas (1)
KL
el 8 de Ag. de 2017
Editada: KL
el 8 de Ag. de 2017
You could do it just by reading it as a string at first and then convert that string using datestr,
>> s = '20150727084239.533';
>> date = datestr([s(1:4),'-',s(5:6),'-',s(7:8),' ',s(9:10),':',s(11:12),':',s(13:end)])
date =
'27-Jul-2015 08:42:39'
0 comentarios
Ver también
Categorías
Más información sobre Dates and Time en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!