How can one bulk time-shift the creation date of JPG images? (OS X)

14

7

I have an unfortunate situation following a vacation. The gist is this: 2 cameras, with Camera #1's clock being two days ahead of Camera #2. Therefore, in (Insert Photo Management Application Here), the photos are interleaved and not in a sensible chronological order. If I could simply move the create date of these images on camera #2 forward enough, then I'll have a fighting chance to actually organize all of these photos.

Anyone share this experience or have any ideas? Thanks!

Justin Searls

Posted 2009-10-30T03:57:23.103

Reputation: 353

Answers

23

There will be quite a few tools that work on the JPEG EXIF fields.
I have always found Phil Harvey's EXIFTool to be fantastic.

Mac OS X Package: ExifTool-7.98.dmg (1.4 MB).
The OS X package installs the ExifTool command-line application and libraries in /usr/bin.
After installing, type "exiftool" in a Terminal window to run exiftool and read the application documentation.

What you are looking for now is,

Date/Time Shift Feature
Have you ever forgotten to set the date/time on your digital camera before taking a bunch of pictures? ExifTool has a time shift feature that makes it easy to apply a batch fix to the timestamps of the images (ie. change the "Date Picture Taken" reported by Windows Explorer).

Say for example that your camera clock was reset to 2000:01:01 00:00:00
when you put in a new battery at 2005:11:03 10:48:00
.
Then all of the pictures you took subsequently have timestamps that are wrong by
5 years, 10 months, 2 days, 10 hours and 48 minutes.

To fix this, put all of the images in the same directory ("DIR") and run exiftool,

exiftool "-DateTimeOriginal+=5:10:2 10:48:0" DIR
          =================^^^^^^^^^^^^^^^^

You need to adjust the incorrectly stamped batch to just two days forward.


Update: Towards working with Create and Modify times for iPhoto,
EXIFTool notes continue at the Date/Time Shift Feature section,

The example above changes only the DateTimeOriginal tag,
but any writable date or time tag can be shifted,
and multiple tags may be written with a single command line.

Commonly, in JPEG images, the DateTimeOriginal, CreateDate and ModifyDate values must all be changed.

For convenience, a shortcut tag called AllDates has been defined to represent these three tags.
So, for example, if you forgot to set your camera clock back 1 hour at the end of daylight savings time in the fall, you can fix the images with:

exiftool "-AllDates-=1" DIR
          =========^^^

This will roll back all timestamps by 1 hour.
Hopefully, your original files are available for doing this...

Finally, if you have the original meta data corrected,
but with incorrect file time
.
You can do the following,

exiftool "-DateTimeOriginal>FileModifyDate" DIR
                           ^

This will push the corrected EXIF timestamp to the file modify time.

nik

Posted 2009-10-30T03:57:23.103

Reputation: 50 788

The last line of your answer saved me. I ran AllDates several times, it never set the file modified time. That last line worked a charm. Thanks a lot. – chmac – 2015-01-01T20:40:21.813

I have a very similar problem only the files are GoPro videos and it's the creation date of one camera's files that I need to shift. Anyone have a script or tool for this? – bernk – 2012-10-24T18:21:51.793

You, sir, are a gentleman and a scholar. One of the best answers I've ever gotten on the SO network. – Justin Searls – 2009-10-30T14:31:11.213

Wow, nice answer. And it's even available for Windows too! – NickAldwin – 2009-10-30T19:04:39.883

@Nick, there is also a GUI, though I am not sure if its as flexible. The Perl module works fine. – nik – 2009-10-31T02:59:34.440

1

This worked to change all EXIF-dates (+=24 hours) taken with a Sony-Cam:

exiftool "-AllDates+=24 -SonyDateTime+=24" DIR

In a 2nd step i changed the file-modify-date to match the exif-dates:

exiftool "-DateTimeOriginal>FileModifyDate" DIR

Seems that DateTimeOriginal takes its values from SonyDateTime.

user44826

Posted 2009-10-30T03:57:23.103

Reputation: 11

1

nik's answer definitely worked for the EXIF data in the files (for the information of those who find this thread looking for an answer, what follows is the command I used to update-in-place the EXIF data of the offending photos):

~/Pictures/iPhoto Library/Originals/2009$ exiftool -P -AllDates+='0:0:1 2:00:00' - overwrite_original_in_place -if '$make eq "Canon"' "My Import Name Here"

Of course, this didn't solve the problem, because iPhoto is ignoring the EXIF date and organizing via either the create date or whatever's in its database.

New solution: I'm an idiot and iPhoto '08 and beyond actually added the time adjust feature to it: Menu item Photo -> Adjust Date and Time. It actually creates a new file and screws up just about all the original EXIF data, but at least the photos finally organize properly in iPhoto.

Justin Searls

Posted 2009-10-30T03:57:23.103

Reputation: 353

1

If iPhoto uses the filesystem date/time, just do this to set it from the EXIF information:

exiftool "-filemodifydate<datetimeoriginal" DIR

before importing into iPhoto

No need to screw up your metadata

Phil Harvey

Posted 2009-10-30T03:57:23.103

Reputation: 236

Ah, but these were files that had been in iPhoto for six months, already in albums / books, etc. So I had to work inside of it. In fact, it was the iPhoto database caching all of this, and you can't even do a clean rebuild of that anymore. I had to settle for the built-in "adjust time" feature that nuked the metadata. – Justin Searls – 2009-10-31T05:51:47.937

0

Graphic Converter is a great tool for managing tons of images too. It has al kind of rename redate functions. Converting to amount of pixels, exact pixel size, file size etc. Embedding of previews (flexible size/icon style) instead of left behind thumb.db file. And it's a better finder than Finder too. More like Explorer on windows with a option for a inverse lightroom look. I browse much more with it than just images!

bert

Posted 2009-10-30T03:57:23.103

Reputation: 931