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

2 vues (au cours des 30 derniers jours)
Ebtesam Farid
Ebtesam Farid le 4 Juil 2021
Commenté : Peter Perkins le 27 Juil 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??

Réponse acceptée

Yazan le 4 Juil 2021
Try this:
readtable(filename, 'Format', '%{uu:DDD:SSSS}D %f')
  6 commentaires
Ebtesam Farid
Ebtesam Farid le 6 Juil 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];
but I get an error.
any help. Thanks
Peter Perkins
Peter Perkins le 27 Juil 2021
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 =
2021:135 00:00:00.123450000
>> s = d.Second
s =
>> d = dateshift(d,'start','day') + seconds(1e5*s)
d =
2021:135 03:25:45.000000000
>> second(d,"secondofday")
ans =
but there is no datetime format that will parse or display "second of day". And then this
isn't going to be right, again you'd need second(d,"secondofday").

Connectez-vous pour commenter.

Plus de réponses (0)


En savoir plus sur Dates and Time dans Help Center et File Exchange




Community Treasure Hunt

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

Start Hunting!

Translated by