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.
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.813I 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