How to get creation date of files

How can I get the creation date of file? I can get modified date with dir command but not the creation date.

 Accepted Answer

Stephen23
Stephen23 on 8 Jun 2016
Edited: Stephen23 on 8 Jun 2016
Try this FEX submission:
Or on windows you can call the DOS command:
but their advice is not quite correct, it actually needs to be like this:
>> [~,str] = dos('dir /T:C *.m');
>> rgx = '(\d{4}\.\d{2}\.\d{2}\.\s+\d{2}:\d{2})\s+\d+\s+([^\n]+)';
>> tkn = regexp(str,rgx,'tokens');
>> tkn{:}
ans =
'2016.03.02. 11:51' 'startup.m'
ans =
'2016.06.07. 15:29' 'Untitled.m'
And then it reads the creation date perfectly!

4 Comments

Thank you very much Stephen. It seems I need Windows. Do you know anything work with Mac like this??
Stephen23
Stephen23 on 8 Jun 2016
Edited: Stephen23 on 8 Jun 2016
POSIX (which MAC OS X is compliant with) does not require the storage of the file creation date. Linux does not store this. But apparently OSX does keep this information somehow.... use your favorite internet search engine and you will find the required commands. Then you just need to find a way to call them from MATLAB (probably via system). Good luck!
Thank you very much.
I'll try these program.
If you have spaces in the directory name you will need to put double quotes on the file name, here in a variable called fileName:
[~, str] = dos(['dir "' fileName '"']);

Sign in to comment.

More Answers (4)

On windows you can simply delegate to .Net
d = system.IO.File.GetCreationTime(fullpath)

1 Comment

Thanks for the info, this is a nice clean solution! By comparison parsing the return from "dir" seems to be very fragile and is inherently platform dependent.
One correction: at least for my case, "system" must be capitalized.
d = System.IO.File.GetCreationTime(fullpath);
The resulting .NET DateTime object can then be converted into a MATLAB datetime object.
creationDateTime = datetime(d.Year, d.Month, d.Day, d.Hour, d.Minute, d.Second);

Sign in to comment.

With python now very much integrated into MATLAB (R2021a), a nice way to get this is the following:
d1 = datetime(py.os.path.getctime('video_path'),'ConvertFrom','epochtime','TicksPerSecond',1,'Format','dd-MMM-yyyy HH:mm:ss.SSS');
Tim Lueth
Tim Lueth on 29 Jan 2019
Edited: Tim Lueth on 29 Jan 2019
On Mac OSX (tested 2019-01-29 using Mojave and Matlab R2018a) use:
[a,b]=system('GetFileInfo myfile.m'); s=strfind(b,'created: ')+9; crdat=b(s:s+18)
or
fname='myfile.m'
[a,b]=system(sprintf('GetFileInfo "%s"',fname)); s=strfind(b,'created: ')+9; crdat=b(s:s+18)
datestr(datenum(crdat))
Why not like this?
file_info = dir(path_to_file)

1 Comment

"Why not like this?"
The question asks for the file creation date. DIR() returns the file modification date:
This is explained in the DIR() documentation:

Sign in to comment.

Categories

Asked:

Gen
on 8 Jun 2016

Commented:

on 26 Jan 2023

Community Treasure Hunt

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

Start Hunting!