Convert from datenum to yymmddHHMMSS
1 次查看(过去 30 天)
显示 更早的评论
I have a large list of dates which I previously converted from yymmddhhmmss format to datenum format using
dateFormat='yymmddHHMMSS';
date=datenum(date,dateFormat);
Now, at the end of a lot of processing, I'd like to reverse this process, to make presentation of my data more readable.
I have tried this:
formatOut='yymmddHHMMSS'; %convert datenum back to original filename format
short_files=datestr(short_files, formatOut);
out=('short_files.csv'); %.csv filename with serialNo
[~,fnm,ext]=fileparts(out);
out = sprintf('%s_%d%s',fnm,serialNo,ext);
dlmwrite(fullfile(path,out),short_files,'delimiter','');
and while this works in my list of variables, when I export to .csv, the values I get look like this:
1.90704E+11 .
0 个评论
采纳的回答
Walter Roberson
2019-8-29
dlmwrite() assumes that the inputs are numeric unless you specify the 'precision' option with a format code such as '%s'
You should
outfile = fullfile(OutputDirectoryName, out);
fid = fopen(outfile, 'wt');
for K = 1 : size(short_files,1)
fprintf(fid, '%s\n', short_files(K,:));
end
fclose(fid)
Or you should skip the problem by using datetime objects and tables and writetable()
3 个评论
Walter Roberson
2019-9-4
It appears I was mistaken about dlmwrite() details. What happens if you try
out = datestr(700000+rand(10,1)*1000,'yymmddHHMMSS');
dlmwrite('test.csv', out, 'delimiter', '')
When I try this, I get the expected output.
Note though that this would not be usable to also write any other non-character output at the same time.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Dates and Time 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!