How to convert excel date and time data into numerical integer matrix [year, month, day, hour, minute, second]
2 ビュー (過去 30 日間)
表示 古いコメント
Greetings,
I have huge excel data starts with the following columns:

Sample data file attached.
I want to sort the data by comparing months/years/hours inside functions. Hence, I need the years, months, days, hours to be seperate integers.
needed output:
year = 2016
month = 11
day = 23
hour = 16
minute = 33
How can I do that (knowing I have tried reading file as table and time table and many other functions).
I would apreciate any help.
採用された回答
Stephen23
2022 年 11 月 21 日
fnm = 'sample data.xlsx';
obj = detectImportOptions(fnm);
obj = setvartype(obj,'date','datetime');
obj = setvartype(obj,'time','duration');
tbl = readtable(fnm,obj)
DT = tbl.date + tbl.time
[Year,Mon,Day] = ymd(DT)
[Hour,Min,Sec] = hms(DT)
3 件のコメント
Stephen23
2022 年 11 月 24 日
編集済み: Stephen23
2022 年 11 月 24 日
"...how can I convert the matrix [year month day hour] back to the same date and time excel columns, with all zero minutes?"
What matrix? Why not just work with the DATETIME/DURATION obejcts?
In any case, given such an Nx4 matrix (note an Nx6 matrix would be simpler to work with):
mat = [2022,11,24,6; 2022,11,24,14; 1973,12,31,23]
dtm = datetime(mat(:,1),mat(:,2),mat(:,3),mat(:,4),0,0)
tbl = table(dtm)
writetable(tbl,'myfile.xlsx')
その他の回答 (1 件)
cr
2022 年 11 月 21 日
An easier way of doing that would be convert the dates into datenum so that you dont have to individually compare years,months,...sec,millisec. date_number = datenum(datescolumn);
Unless you are using older versions of Matlab, a column with dates is automatically imported as datenumbers. If it doesn't datenum() may be used.
2 件のコメント
cr
2022 年 11 月 21 日
Well, then you may create your own date number for dates based on years, days and hours. To seggregate the dates into these use datavec(). E.g.
ymd = datevec(datesColumn);
参考
カテゴリ
Find more on Tables in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!