problem with dir function in R2014A

2 views (last 30 days)
Eyal weinberger
Eyal weinberger on 2 Dec 2014
after updating to R2014A, when I use the dir command i get a message: Caught "std::exception" Exception message is: Cannot convert dates prior to Jan 1, 1970
what does it means and how do I solve the problem?

Answers (2)

Guillaume
Guillaume on 2 Dec 2014
There's a bug with dir, imfinfo and probably some other functions when they encounter a file with a modification date outside of a certain range.
In your case, it looks like you have a file with a modification date older than 1970. It's a perfectly valid file and matlab shouldn't choke on it but it does. I wasn't aware it occurred as well in 2014A, I thought it only appeared in 2014B because of their new datetime type. I've reported the bug to Mathworks. Whether it'll be fix anytime soon is unknown. Probably not, it's not even appeared in their bug database.
You have several workaround:
  1. Find the offending file(s) with windows explorer and edit it to change its modification time to now
  2. Use system(dir) (windows) system(ls) (unix) and parse the output yourself
  3. Use .Net (windows) System.IO.Directory methods, e.g. to get all files in a directory:
files = cell(System.IO.Directory.GetFiles(foldername));
See also this answer
  2 Comments
Guillaume
Guillaume on 2 Dec 2014
Edited: Guillaume on 2 Dec 2014
However, I would note that the limitation of jan 1, 1970 is not unique to matlab. Some of the times on Windows and Unix are stored as the numbers of second ellapsed since Jan 1, 1970 and thus can't be any earlier. Even Windows Explorer doesn't cope well with dates before 1970: it doesn't display the date in the details column.
This is not the case for file modification time on Windows though. The reference is Jan 1, 1601.
Guillaume
Guillaume on 2 Dec 2014
Also, in R2014b, I can't get dir to fail with modification dates before 1970, so this particular error may have been fixed in the latest version.

Sign in to comment.


michael scheinfeild
michael scheinfeild on 18 Dec 2014
so there is no quick solution , what i did is rename all files to a(1).jpg , a(2).jpg
ant then run in loop where name is name=strcat ('a(',num2str(ind),').jpg')

Categories

Find more on File Operations in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!