How to read time of (YY:DOY:SSSSS) format ?

2 visualizaciones (últimos 30 días)
Ebtesam Farid
Ebtesam Farid el 4 de Jul. de 2021
Comentada: Peter Perkins el 27 de Jul. de 2021
Hello guys,
I have a text file contains GNSS processed meansurements with time resolution (5-min) [every 300 sec), the date fromat are (YY:DOY:SSSSS) format, and its type is string in the file, I tired to read it with readtable but I got error message
T = readtable(filename, 'Format','%{yy:dayofyear:sssss}D %f');
the error message is:
Unable to read the DATETIME data with the format 'yy:dayofyear:sssss'. If the data is not a time
I attached the file ( the file conatins 5 rows as a header)
any suggestion on how to read a date in this format??

Respuesta aceptada

Yazan
Yazan el 4 de Jul. de 2021
Try this:
readtable(filename, 'Format', '%{uu:DDD:SSSS}D %f')
  6 comentarios
Ebtesam Farid
Ebtesam Farid el 6 de Jul. de 2021
I have another question, please. my data points are every 300 sec, so I have the second field from 00000 till 86200 sec (which reprents 24 hours of the day), and I have some files that don't start from 000 second, instead it may start from (60,000 sec or 72,000 sec). Now I need to creat if statement that has condition to say that if the seconds don't start from 000 sec, fill this data points with zero.
I succed with the data points which not ended with 86200
I wrote
T = readtable(filename, 'Format', '%{uu:DDD:SSSS}D %f');
time = T.Var1;
datapoints = T.Var2;
sec = second(time);
if sec<0.8620
A = zeros(288-length(datapoints),:);
datapoints_1 = [datapoints; A];
elseif sec~=0.00000
datapoints_1 = [A; datapoints];
end
but I get an error.
any help. Thanks
Peter Perkins
Peter Perkins el 27 de Jul. de 2021
This
readtable(filename, 'Format', '%{uu:DDD:SSSS}D %f')
can't possibly be right. S is fractional seconds. It's parsing those timestamps completely wrong. Maybe if you do something like this
>> d = datetime('2021:135:12345',"InputFormat","uuuu:DDD:SSSSS","Format","uuuu:DD HH:mm:ss.SSSSSSSSS")
d =
datetime
2021:135 00:00:00.123450000
>> s = d.Second
s =
0.12345
>> d = dateshift(d,'start','day') + seconds(1e5*s)
d =
datetime
2021:135 03:25:45.000000000
>> second(d,"secondofday")
ans =
12345
but there is no datetime format that will parse or display "second of day". And then this
sssss<200000
isn't going to be right, again you'd need second(d,"secondofday").

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Dates and Time en Help Center y File Exchange.

Productos


Versión

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by