Change EXIF meta-data of multiple images in single click
ExifTool is the one to go for.

It has a time shift feature that allows you to shift the dates.


  
    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
  
  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
  
  See Image::ExifTool::Shift.pl (download in PDF format) for
  details about the syntax of the time shift string.


Some things to note:

Test on a small batch of copies first until you get the date syntax you want.

I suggest you copy or move your images to a new folder first.
And run the command on that directory.

If you run exiftool on a directory it will look in sub directories and modify any image files it finds.

Exiftool WILL automatically append '_original' on the end of your original files and create a new copy for you with the modifications.

You can override this by using the '-overwrite_original' option.

exiftool  -overwrite_original -AllDates+="0:2:1 10:48:0" /Users/UserName/Desktop/testFolder


This example shifts forward   0 years, 2 months, 1 day,  10 hours, 48 minutes, 0 seconds.

Using a single set of time shifts i.e instead of "0:2:1 10:48:0" you use "10:48:0". Exiftool will see this as hh:mm:ss.
And you can omit 0 where you do not want to put a shift.

exiftool  -overwrite_original AllDates+="9::" /Users/UserName/Desktop/testFolder


This example shifts forward 9 hours.

   exiftool  -overwrite_original -AllDates-="9::" /Users/UserName/Desktop/testFolder


This example shifts back 9 hours.

Notice AllDates-="  and AllDates+="  , one has a plus one has a minus.

Also Remember you are shifting time not stamping a time stamp.

So if my original date was :
2011:07:21 01:41:29

and I used exiftool  -overwrite_original -AllDates-="24::" /Users/UserName/Desktop/testFolder

Then I would get : 2011:07:20 01:41:29

Do download the PDF with the syntax

And make sure you look at the difference with the options -overwrite_original_in_place  and -overwrite_original
Documentation