How to convert date by changine date format from text file?

I'd like to convert date according to first three column as day-month-year hour:minute:second.
  • A column: Year
  • B column: Day of the year
  • C column: Hour
I tried to do it, not achieving.

 Réponse acceptée

Kojiro Saito
Kojiro Saito le 25 Juin 2019
Modifié(e) : Kojiro Saito le 26 Juin 2019
Simply, you can utilize table's functioinalities.
t = readtable('test5.txt');
% Create datetime and display as "day-month-year hour:minute:second" format
dt = datetime([t.Var1 ones(height(t), 1) t.Var2 t.Var3 zeros(height(t), 1) zeros(height(t), 1)], 'Format', 'dd-MM-yyyy HH:mm:ss');
% Insert datetime variable to the table as "datestr" column
t.datestr = dt;
% Write a table as a file
writetable(t, 'output.txt')
UPDATED
Based on your comment, the following is what you want. removevars and movevars were introduced in R2018a.
t = readtable('test5.txt');
% Convert to datetime
dt = datetime([t.Var1 ones(height(t), 1) t.Var2 t.Var3 zeros(height(t), 1) zeros(height(t), 1)]);
% Insert datetime variables to original table
t.datestr = datetime(dt, 'Format', 'dd-MM-yyyy');
t.timestr = datetime(dt, 'Format', 'HH:mm:ss');
% Delete column 1 to 3
T2 = removevars(t, 1:3);
% Move datestr and timestr to the first and second columns
T2 = movevars(T2, {'datestr', 'timestr'}, 'Before',1);
% Write table as a tab separated file without headers
writetable(T2, 'output.txt', 'WriteVariableNames', false, 'Delimiter', 'tab')

2 commentaires

I think I didn't explain myself clearly.
Output should be as follow
29-06-2012 00:00:00 30 25 21.2
I've updated the answer.

Connectez-vous pour commenter.

Plus de réponses (1)

Try this function, it accepts three vectors corresponding to year, day and hour
function Dt = conv(Year, Day, Hour)
Dt = datetime(Year, 1, 1) + Day - 1 + hours(Hour);
end

6 commentaires

How to input data and write it to text file again?
>> conv
Not enough input arguments.
Error in conv (line 2)
Dt = datetime(Year, 1, 1) + Day - 1 + hours(Hour);
You don't have to call this like - conv.
Suppose your data are stored in Year, Day and Hour column vectors, then use the following statement
conv(Year, Day, Hour)
Sorry, I don't understand.
I will give an example
Year = 2000:2020; % your year vector
Day = 20:40 % your day vector
Hour = 0:20 % your hour vector
conv(Year, Day, Hour) % calling the function with the arguments
If you want to read data from the file, use this link - textscan. However note that this was not what was specified in your question. If you want something else please specify it clearly in your question.
Sorry about that. Indeed, I need to write output other columns together in the text file.

Connectez-vous pour commenter.

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by