If you're comfortable with the command line, try exiftool.
I'd suggest this command:
exiftool "-alldates<${filename;m/(\d{4}-\d\d-\d\d)/;$_=$1} 00:00:00" DIR
This command creates backup files. Add -overwrite_original
to suppress the creation of backup files. Add -r
to recurse into subdirectories.
What this does is take the filename, match the appropriate date numbers, add a time, and copy that to the three main embedded EXIF timestamps (DateTimeOriginal
, CreateDate
, and ModifyDate
).
You can run it on multiple directories or a mix of directories and filenames at the same time. Just replace DIR in the above command with the directory you wish to process.
Since Google Photos is the destination for the images, it should be noted that Google Photos will read the time stamps from a large number of embedded dates. Unfortunately, there is no preset order and it appears to be dependent upon the order the data appears in the file, with the exception of the GPS and System times appearing to always be the last choice. The applicable tags, using exiftool nomenclature, are:
- EXIF:CreateDate
- EXIF:DateTimeOriginal
- EXIF:ModifyDate
- IPTC:DateCreated+IPTC:TimeCreated
- IPTC:DigitalCreationDate+IPTC:DigitalCreationTime
- XMP-exif:DateTimeDigitized
- XMP-exif:DateTimeOriginal
- XMP-photoshop:DateCreated
- XMP-xmp:CreateDate
- XMP-xmp:ModifyDate
- GPS:GPSDateStamp+GPS:GPSTimeStamp
- System:FileModifyDate