An academic question that puzzles me. I guess QuickTime epoch 1904 is used with '-api QuickTimeUTC=1', right?
I have heard that some old devices somehow save incorrect dates that are then incorrectly displayed 66 years before the correct date. Are there such sample movies or is it just a simple date issue? I did a quick test:
After 1970 it works as expected...
exiftool -overwrite_original -api LargeFileSupport=1 -api QuickTimeUTC=1 '-QuickTime:Time:All=1970:01:01 12:00:00' movie.mp4
exiftool -a -G1 -s -api LargeFileSupport=1 -api QuickTimeUTC=1 -Time:All movie.mp4
[QuickTime] CreateDate : 1970:01:01 12:00:00+02:00
[QuickTime] ModifyDate : 1970:01:01 12:00:00+02:00
[Track1] TrackCreateDate : 1970:01:01 12:00:00+02:00
[Track1] TrackModifyDate : 1970:01:01 12:00:00+02:00
[Track1] MediaCreateDate : 1970:01:01 12:00:00+02:00
[Track1] MediaModifyDate : 1970:01:01 12:00:00+02:00
[Track2] TrackCreateDate : 1970:01:01 12:00:00+02:00
[Track2] TrackModifyDate : 1970:01:01 12:00:00+02:00
[Track2] MediaCreateDate : 1970:01:01 12:00:00+02:00
[Track2] MediaModifyDate : 1970:01:01 12:00:00+02:00
[Microsoft] EncodingTime : 1970:01:01 12:00:00+02:00
[Microsoft] DateAcquired : 1970:01:01 12:00:00
[UserData] DateTimeOriginal : 1970:01:01 12:00:00+02:00
[ItemList] ReleaseDate : 1970:01:01 12:00:00
[ItemList] ContentCreateDate : 1970:01:01 12:00:00+02:00
[Keys] CreationDate : 1970:01:01 12:00:00+02:00
[Keys] LocationDate : 1970:01:01 12:00:00+02:00
[Keys] Year : 1970:01:01 12:00:00
...and also at 1950 (although that Microsoft G0 group QuickTime:DateAcquired is read as year 2319):
exiftool -overwrite_original -api LargeFileSupport=1 -api QuickTimeUTC=1 '-QuickTime:Time:All=1950:01:01 12:00:00' movie.mp4
exiftool -a -G1 -s -api LargeFileSupport=1 -api QuickTimeUTC=1 -Time:All movie.mp4
[QuickTime] CreateDate : 1950:01:01 12:00:00+02:00
[QuickTime] ModifyDate : 1950:01:01 12:00:00+02:00
[Track1] TrackCreateDate : 1950:01:01 12:00:00+02:00
[Track1] TrackModifyDate : 1950:01:01 12:00:00+02:00
[Track1] MediaCreateDate : 1950:01:01 12:00:00+02:00
[Track1] MediaModifyDate : 1950:01:01 12:00:00+02:00
[Track2] TrackCreateDate : 1950:01:01 12:00:00+02:00
[Track2] TrackModifyDate : 1950:01:01 12:00:00+02:00
[Track2] MediaCreateDate : 1950:01:01 12:00:00+02:00
[Track2] MediaModifyDate : 1950:01:01 12:00:00+02:00
[Microsoft] EncodingTime : 1950:01:01 12:00:00+02:00
[Microsoft] DateAcquired : 2319:01:01 12:00:00
[UserData] DateTimeOriginal : 1950:01:01 12:00:00+02:00
[ItemList] ReleaseDate : 1950:01:01 12:00:00
[ItemList] ContentCreateDate : 1950:01:01 12:00:00+02:00
[Keys] CreationDate : 1950:01:01 12:00:00+02:00
[Keys] LocationDate : 1950:01:01 12:00:00+02:00
[Keys] Year : 1950:01:01 12:00:00
...but if all dates are shifted by zero (as recommended for some related command and to fix (?) "Warning: [minor] Patched incorrect time zero for QuickTime date/time tag"), then almost all dates are moved forwards 66 years 1 day to year 2016 (1970-1904=66):
exiftool -overwrite_original -api LargeFileSupport=1 '-QuickTime:Time:All+=0:0:0 00:00:00' movie.mp4
exiftool -a -G1 -s -api LargeFileSupport=1 -api QuickTimeUTC=1 -Time:All movie.mp4
[QuickTime] CreateDate : 2016:01:02 12:00:00+02:00
[QuickTime] ModifyDate : 2016:01:02 12:00:00+02:00
[Track1] TrackCreateDate : 2016:01:02 12:00:00+02:00
[Track1] TrackModifyDate : 2016:01:02 12:00:00+02:00
[Track1] MediaCreateDate : 2016:01:02 12:00:00+02:00
[Track1] MediaModifyDate : 2016:01:02 12:00:00+02:00
[Track2] TrackCreateDate : 2016:01:02 12:00:00+02:00
[Track2] TrackModifyDate : 2016:01:02 12:00:00+02:00
[Track2] MediaCreateDate : 2016:01:02 12:00:00+02:00
[Track2] MediaModifyDate : 2016:01:02 12:00:00+02:00
[Microsoft] EncodingTime : 1950:01:01 12:00:00+02:00
[Microsoft] DateAcquired : 2319:01:01 12:00:00
[UserData] DateTimeOriginal : 1950:01:01 12:00:00+02:00
[ItemList] ReleaseDate : 1950:01:01 12:00:00
[ItemList] ContentCreateDate : 1950:01:01 12:00:00+02:00
[Keys] CreationDate : 1950:01:01 12:00:00+02:00
[Keys] LocationDate : 1950:01:01 12:00:00+02:00
[Keys] Year : 1950:01:01 12:00:00
BTW The earliest date 'QuickTime:CreateDate' supports in macOS 14.2.1 Sonoma Photos.app is 1904:01:01 00:00:00 UTC. On the other hand, 'Keys:CreationDate' supports dates as early as 0001:01:01 00:00:00. Photos.app can read that year 0001 but usually it is best to also use 'Keys:CreationDate' for dates before 1970 because apps like Google Photos might incorrectly sort movie dates earlier than 1902 even with 'Keys:CreationDate'.
- Matti
Haven't verified this, but could it be because you forgot to add -api QuickTimeUTC=1 to the timeshift command?
I just tried this and can confirm it is because you forgot -api QuickTimeUTC=1 in the timeshift command. With exiftool -overwrite_original -api LargeFileSupport=1 -api QuickTimeUTC=1 '-QuickTime:Time:All+=0:0:0 00:00:00' movie.mp4
it produces the expected results :)
(albeit with a bogus Microsoft DateAcquired)
Does this help explain things (from here (http://exiftool.org/ExifTool.html#QuickTimeUTC))?:
QuickTimeUTC
Flag set to assume that QuickTime date/time values are stored
as UTC, causing conversion to local time when they are
extracted and from local time when written. According to the
QuickTime specification date/time values should be UTC, but
many digital cameras store local time instead (presumably
because they don't know the time zone), so the default is to
not convert these times (except for Canon CR3 files, which
always use UTC times). This option also disables the
autodetection of incorrect time-zero offsets in QuickTime
date/time values, and enforces a time zero of 1904 as per the
QuickTime specification.
- Phil
Quote from: Phil Harvey on January 21, 2024, 07:08:29 AMThis option [QuickTimeUTC] also disables the autodetection of incorrect time-zero offsets in QuickTime date/time values, and enforces a time zero of 1904 as per the QuickTime specification.
Thanks, that explains the different behavior when shifting pre- and post-1970 movie dates. With -api QuickTimeUTC=0, 66 years is added to pre-1970 movie dates. With -api QuickTimeUTC=1 both pre- and post-1970 movie dates are shifted in the same manner by the set amount:
exiftool -a -G1 -s -api LargeFileSupport=1 -api QuickTimeUTC=1 -Time:All movie.mp4
[QuickTime] CreateDate : 1950:01:01 12:00:00+02:00
[QuickTime] ModifyDate : 1950:01:01 12:00:00+02:00
[Track1] TrackCreateDate : 1950:01:01 12:00:00+02:00
[Track1] TrackModifyDate : 1950:01:01 12:00:00+02:00
[Track1] MediaCreateDate : 1950:01:01 12:00:00+02:00
[Track1] MediaModifyDate : 1950:01:01 12:00:00+02:00
[Track2] TrackCreateDate : 1950:01:01 12:00:00+02:00
[Track2] TrackModifyDate : 1950:01:01 12:00:00+02:00
[Track2] MediaCreateDate : 1950:01:01 12:00:00+02:00
[Track2] MediaModifyDate : 1950:01:01 12:00:00+02:00
[Microsoft] EncodingTime : 1950:01:01 12:00:00+02:00
[Microsoft] DateAcquired : 2319:01:01 12:00:00
[UserData] DateTimeOriginal : 1950:01:01 12:00:00+02:00
[ItemList] ReleaseDate : 1950:01:01 12:00:00
[ItemList] ContentCreateDate : 1950:01:01 12:00:00+02:00
[Keys] CreationDate : 1950:01:01 12:00:00+02:00
[Keys] LocationDate : 1950:01:01 12:00:00+02:00
[Keys] Year : 1950:01:01 12:00:00
exiftool -m -overwrite_original -api LargeFileSupport=1 -api QuickTimeUTC=1 '-QuickTime:Time:All+=2:0:0 00:00:00' movie.mp4
Warning: Shift results in negative time when shifting TrackCreateDate - movie.mp4
1 image files updated
exiftool -a -G1 -s -api LargeFileSupport=1 -api QuickTimeUTC=1 -Time:All movie.mp4
[QuickTime] CreateDate : 1952:01:01 12:00:00+02:00
[QuickTime] ModifyDate : 1952:01:01 12:00:00+02:00
[Track1] TrackCreateDate : 1952:01:01 12:00:00+02:00
[Track1] TrackModifyDate : 1952:01:01 12:00:00+02:00
[Track1] MediaCreateDate : 1952:01:01 12:00:00+02:00
[Track1] MediaModifyDate : 1952:01:01 12:00:00+02:00
[Track2] TrackCreateDate : 1950:01:01 12:00:00+02:00
[Track2] TrackModifyDate : 1950:01:01 12:00:00+02:00
[Track2] MediaCreateDate : 1950:01:01 12:00:00+02:00
[Track2] MediaModifyDate : 1950:01:01 12:00:00+02:00
[Microsoft] EncodingTime : 1952:01:01 12:00:00+02:00
[Microsoft] DateAcquired : 2321:01:01 12:00:00
[UserData] DateTimeOriginal : 1952:01:01 12:00:00+02:00
[ItemList] ReleaseDate : 1950:01:01 12:00:00
[ItemList] ContentCreateDate : 1952:01:01 12:00:00+02:00
[Keys] CreationDate : 1952:01:01 12:00:00+02:00
[Keys] LocationDate : 1952:01:01 12:00:00+02:00
[Keys] Year : 1950:01:01 12:00:00
I often use -api QuickTimeUTC=1 as a placeholder when reading and writing movie and image dates (where it has no effect) so I don't forget it. But somehow I left it out for that date shift command presuming the dates were simply shifted.
Where does that "Warning: Shift results in negative time when shifting TrackCreateDate" come from?
- Matti
Hi Matti,
Quote from: wywh on January 21, 2024, 10:26:45 AMWhere does that "Warning: Shift results in negative time when shifting TrackCreateDate" come from?
If you upload the sample I can take a closer look and tell you what is happening.
- Phil
Quote from: Phil Harvey on January 21, 2024, 05:08:30 PMIf you upload the sample I can take a closer look and tell you what is happening
OK.
movie.mp4.zip
Right. The ExifTool time shift feature converts the time to seconds since 1970 for the shift, and the dates are all in 1950 when you use QuickTimeUTC on this file, so all the times are negative.
Modern versions of the date/time libraries may support negative times, but the warning may still be valid because you shouldn't have date/times before 1970. Maybe I should say "date before 1970" instead of "negative time" in the message?
- Phil
Quote from: Phil Harvey on January 22, 2024, 09:00:56 AMMaybe I should say "date before 1970" instead of "negative time" in the message
Thanks, in v12.74 the warning message is not so confusing anymore.
Not a big deal but why only Track1 dates are shifted, and Track2 and Keys dates are left intact?
(I usually set all QuickTime dates the same because it helps spotting date errors).
exiftool -a -G1 -s -api LargeFileSupport=1 -api QuickTimeUTC=1 -Time:All movie.mp4
[QuickTime] CreateDate : 1950:01:01 12:00:00+02:00
[QuickTime] ModifyDate : 1950:01:01 12:00:00+02:00
[Track1] TrackCreateDate : 1950:01:01 12:00:00+02:00
[Track1] TrackModifyDate : 1950:01:01 12:00:00+02:00
[Track1] MediaCreateDate : 1950:01:01 12:00:00+02:00
[Track1] MediaModifyDate : 1950:01:01 12:00:00+02:00
[Track2] TrackCreateDate : 1950:01:01 12:00:00+02:00
[Track2] TrackModifyDate : 1950:01:01 12:00:00+02:00
[Track2] MediaCreateDate : 1950:01:01 12:00:00+02:00
[Track2] MediaModifyDate : 1950:01:01 12:00:00+02:00
[Microsoft] EncodingTime : 1950:01:01 12:00:00+02:00
[Microsoft] DateAcquired : 2319:01:01 12:00:00
[UserData] DateTimeOriginal : 1950:01:01 12:00:00+02:00
[ItemList] ReleaseDate : 1950:01:01 12:00:00
[ItemList] ContentCreateDate : 1950:01:01 12:00:00+02:00
[Keys] CreationTime : 1950:01:01 12:00:00+02:00
[Keys] CreationDate : 1950:01:01 12:00:00+02:00
[Keys] LocationDate : 1950:01:01 12:00:00+02:00
[Keys] Year : 1950:01:01 12:00:00
exiftool -m -overwrite_original -api LargeFileSupport=1 -api QuickTimeUTC=1 '-QuickTime:Time:All+=2:0:0 00:00:00' movie.mp4
Warning: Shift results in date before 1970 when shifting TrackCreateDate - movie.mp4
1 image files updated
exiftool -a -G1 -s -api LargeFileSupport=1 -api QuickTimeUTC=1 -Time:All movie.mp4
[System] FileModifyDate : 2024:01:29 10:30:35+02:00
[System] FileAccessDate : 2024:01:29 10:30:35+02:00
[System] FileInodeChangeDate : 2024:01:29 10:30:35+02:00
[QuickTime] CreateDate : 1952:01:01 12:00:00+02:00
[QuickTime] ModifyDate : 1952:01:01 12:00:00+02:00
[Track1] TrackCreateDate : 1952:01:01 12:00:00+02:00
[Track1] TrackModifyDate : 1952:01:01 12:00:00+02:00
[Track1] MediaCreateDate : 1952:01:01 12:00:00+02:00
[Track1] MediaModifyDate : 1952:01:01 12:00:00+02:00
[Track2] TrackCreateDate : 1950:01:01 12:00:00+02:00
[Track2] TrackModifyDate : 1950:01:01 12:00:00+02:00
[Track2] MediaCreateDate : 1950:01:01 12:00:00+02:00
[Track2] MediaModifyDate : 1950:01:01 12:00:00+02:00
[Microsoft] EncodingTime : 1952:01:01 12:00:00+02:00
[Microsoft] DateAcquired : 2321:01:01 12:00:00
[UserData] DateTimeOriginal : 1952:01:01 12:00:00+02:00
[ItemList] ReleaseDate : 1950:01:01 12:00:00
[ItemList] ContentCreateDate : 1952:01:01 12:00:00+02:00
[Keys] CreationTime : 1952:01:01 12:00:00+02:00
[Keys] CreationDate : 1952:01:01 12:00:00+02:00
[Keys] LocationDate : 1952:01:01 12:00:00+02:00
[Keys] Year : 1950:01:01 12:00:00
- Matti
Yes. This behaviour is the same as EXIF tags. ExifTool writes to the first track by default unless you specify another track. (The same way an EXIF IFD0 tag doesn't write to IFD1.)
- Phil
Quote from: Phil Harvey on January 29, 2024, 08:10:27 AMExifTool writes to the first track by default unless you specify another track
Sorry for pestering but somehow that date shift command does work for post-1970 also for Track2:
exiftool -a -G1 -s -api LargeFileSupport=1 -api QuickTimeUTC=1 -Time:All movie.mp4
[QuickTime] CreateDate : 1970:01:01 12:00:00+02:00
[QuickTime] ModifyDate : 1970:01:01 12:00:00+02:00
[Track1] TrackCreateDate : 1970:01:01 12:00:00+02:00
[Track1] TrackModifyDate : 1970:01:01 12:00:00+02:00
[Track1] MediaCreateDate : 1970:01:01 12:00:00+02:00
[Track1] MediaModifyDate : 1970:01:01 12:00:00+02:00
[Track2] TrackCreateDate : 1970:01:01 12:00:00+02:00
[Track2] TrackModifyDate : 1970:01:01 12:00:00+02:00
[Track2] MediaCreateDate : 1970:01:01 12:00:00+02:00
[Track2] MediaModifyDate : 1970:01:01 12:00:00+02:00
[Microsoft] EncodingTime : 1970:01:01 12:00:00+02:00
[Microsoft] DateAcquired : 1970:01:01 12:00:00
[UserData] DateTimeOriginal : 1970:01:01 12:00:00+02:00
[ItemList] ReleaseDate : 1970:01:01 12:00:00
[ItemList] ContentCreateDate : 1970:01:01 12:00:00+02:00
[Keys] CreationTime : 1970:01:01 12:00:00+02:00
[Keys] CreationDate : 1970:01:01 12:00:00+02:00
[Keys] LocationDate : 1970:01:01 12:00:00+02:00
[Keys] Year : 1970:01:01 12:00:00
exiftool -m -overwrite_original -api LargeFileSupport=1 -api QuickTimeUTC=1 '-QuickTime:Time:All+=2:0:0 00:00:00' movie.mp4
1 image files updated
exiftool -a -G1 -s -api LargeFileSupport=1 -api QuickTimeUTC=1 -Time:All movie.mp4
[QuickTime] CreateDate : 1972:01:01 12:00:00+02:00
[QuickTime] ModifyDate : 1972:01:01 12:00:00+02:00
[Track1] TrackCreateDate : 1972:01:01 12:00:00+02:00
[Track1] TrackModifyDate : 1972:01:01 12:00:00+02:00
[Track1] MediaCreateDate : 1972:01:01 12:00:00+02:00
[Track1] MediaModifyDate : 1972:01:01 12:00:00+02:00
[Track2] TrackCreateDate : 1972:01:01 12:00:00+02:00
[Track2] TrackModifyDate : 1972:01:01 12:00:00+02:00
[Track2] MediaCreateDate : 1972:01:01 12:00:00+02:00
[Track2] MediaModifyDate : 1972:01:01 12:00:00+02:00
[Microsoft] EncodingTime : 1972:01:01 12:00:00+02:00
[Microsoft] DateAcquired : 1972:01:01 12:00:00
[UserData] DateTimeOriginal : 1972:01:01 12:00:00+02:00
[ItemList] ReleaseDate : 1970:01:01 12:00:00
[ItemList] ContentCreateDate : 1972:01:01 12:00:00+02:00
[Keys] CreationTime : 1972:01:01 12:00:00+02:00
[Keys] CreationDate : 1972:01:01 12:00:00+02:00
[Keys] LocationDate : 1972:01:01 12:00:00+02:00
[Keys] Year : 1970:01:01 12:00:00
- Matti
You're not being a pest. You're right. Interesting. I was wrong when I said only Track1 was written by default.
I should have looked paid more attention to this before. The "before 1970" error is only thrown for values after Track1.
This will require more work to sort this out.
- Phil
After some testing I have decided to remove the "before 1970" warning entirely, and just let the system handle negative dates. That warning made sense for 32-bit systems, but 64-bit systems are common now, and 64-bit C libraries should be able to handle negative dates. I tested this and it works with Windows 10 and the current version of Perl used in the Windows version of ExifTool.
This change means that time shifts should work the same with or without the QuickTimeUTC option.
Thanks for pushing on this because I think it will be a worthwhile change.
The reason that Track1 wasn't affected is because these dates are shifted manually instead of using the library functions. (Read the TRICKY section here (https://exiftool.org/Shift.html#TRICKY) for the reason behind this difference.)
- Phil
P.S. So in fact, IFD0 is handled differently than Track1. I checked the code to see why, and the default write group for these EXIF tags is IFD0, but for QuickTime there is effectively no default write group for Track tags, and they are written to all tracks. I see why I did it this way because for TIFF files the IFD's are separate images, but for QuickTime files the tracks are just different components of the same movie. (Forgive my bad memory, but I did add this feature more than 10 years ago.)
Quote from: Phil Harvey on January 30, 2024, 08:59:01 AMtime shifts should work the same with or without the QuickTimeUTC option
With QuickTimeUTC option v12.75 time shift works as expected. But without it, 66 years is added to pre-1970 QuickTime dates (why G0 QuickTime:CreationDate and QuickTime:DateTimeOriginal behave differently than QuickTime:CreateDate etc?).
exiftool -a -G1 -s -api LargeFileSupport=1 -api QuickTimeUTC=1 -Time:All movie.mp4
[QuickTime] CreateDate : 1950:01:01 12:00:00+02:00
[QuickTime] ModifyDate : 1950:01:01 12:00:00+02:00
[Track1] TrackCreateDate : 1950:01:01 12:00:00+02:00
[Track1] TrackModifyDate : 1950:01:01 12:00:00+02:00
[Track1] MediaCreateDate : 1950:01:01 12:00:00+02:00
[Track1] MediaModifyDate : 1950:01:01 12:00:00+02:00
[Track2] TrackCreateDate : 1950:01:01 12:00:00+02:00
[Track2] TrackModifyDate : 1950:01:01 12:00:00+02:00
[Track2] MediaCreateDate : 1950:01:01 12:00:00+02:00
[Track2] MediaModifyDate : 1950:01:01 12:00:00+02:00
[Microsoft] EncodingTime : 1950:01:01 12:00:00+02:00
[Microsoft] DateAcquired : 2319:01:01 12:00:00
[UserData] DateTimeOriginal : 1950:01:01 12:00:00+02:00
[ItemList] ReleaseDate : 1950:01:01 12:00:00
[ItemList] ContentCreateDate : 1950:01:01 12:00:00+02:00
[Keys] CreationTime : 1950:01:01 12:00:00+02:00
[Keys] CreationDate : 1950:01:01 12:00:00+02:00
[Keys] LocationDate : 1950:01:01 12:00:00+02:00
[Keys] Year : 1950:01:01 12:00:00
exiftool -overwrite_original -api LargeFileSupport=1 -api QuickTimeUTC=1 '-QuickTime:Time:All+=0:0:0 00:00:00' movie.mp4
1 image files updated
exiftool -a -G1 -s -api LargeFileSupport=1 -api QuickTimeUTC=1 -Time:All movie.mp4
[QuickTime] CreateDate : 1950:01:01 12:00:00+02:00
[QuickTime] ModifyDate : 1950:01:01 12:00:00+02:00
[Track1] TrackCreateDate : 1950:01:01 12:00:00+02:00
[Track1] TrackModifyDate : 1950:01:01 12:00:00+02:00
[Track1] MediaCreateDate : 1950:01:01 12:00:00+02:00
[Track1] MediaModifyDate : 1950:01:01 12:00:00+02:00
[Track2] TrackCreateDate : 1950:01:01 12:00:00+02:00
[Track2] TrackModifyDate : 1950:01:01 12:00:00+02:00
[Track2] MediaCreateDate : 1950:01:01 12:00:00+02:00
[Track2] MediaModifyDate : 1950:01:01 12:00:00+02:00
[Microsoft] EncodingTime : 1950:01:01 12:00:00+02:00
[Microsoft] DateAcquired : 2319:01:01 12:00:00
[UserData] DateTimeOriginal : 1950:01:01 12:00:00+02:00
[ItemList] ReleaseDate : 1950:01:01 12:00:00
[ItemList] ContentCreateDate : 1950:01:01 12:00:00+02:00
[Keys] CreationTime : 1950:01:01 12:00:00+02:00
[Keys] CreationDate : 1950:01:01 12:00:00+02:00
[Keys] LocationDate : 1950:01:01 12:00:00+02:00
[Keys] Year : 1950:01:01 12:00:00
exiftool -overwrite_original -api LargeFileSupport=1 '-QuickTime:Time:All+=0:0:0 00:00:00' movie.mp4
1 image files updated
exiftool -a -G1 -s -api LargeFileSupport=1 -api QuickTimeUTC=1 -Time:All movie.mp4
[QuickTime] CreateDate : 2016:01:02 12:00:00+02:00
[QuickTime] ModifyDate : 2016:01:02 12:00:00+02:00
[Track1] TrackCreateDate : 2016:01:02 12:00:00+02:00
[Track1] TrackModifyDate : 2016:01:02 12:00:00+02:00
[Track1] MediaCreateDate : 2016:01:02 12:00:00+02:00
[Track1] MediaModifyDate : 2016:01:02 12:00:00+02:00
[Track2] TrackCreateDate : 2016:01:02 12:00:00+02:00
[Track2] TrackModifyDate : 2016:01:02 12:00:00+02:00
[Track2] MediaCreateDate : 2016:01:02 12:00:00+02:00
[Track2] MediaModifyDate : 2016:01:02 12:00:00+02:00
[Microsoft] EncodingTime : 1950:01:01 12:00:00+02:00
[Microsoft] DateAcquired : 2319:01:01 12:00:00
[UserData] DateTimeOriginal : 1950:01:01 12:00:00+02:00
[ItemList] ReleaseDate : 1950:01:01 12:00:00
[ItemList] ContentCreateDate : 1950:01:01 12:00:00+02:00
[Keys] CreationTime : 1950:01:01 12:00:00+02:00
[Keys] CreationDate : 1950:01:01 12:00:00+02:00
[Keys] LocationDate : 1950:01:01 12:00:00+02:00
[Keys] Year : 1950:01:01 12:00:00
Without QuickTimeUTC option time shift works as expected only when the initial year is post-1970:
exiftool -a -G1 -s -api LargeFileSupport=1 -api QuickTimeUTC=1 -Time:All movie.mp4
[QuickTime] CreateDate : 1970:01:01 12:00:00+02:00
[QuickTime] ModifyDate : 1970:01:01 12:00:00+02:00
[Track1] TrackCreateDate : 1970:01:01 12:00:00+02:00
[Track1] TrackModifyDate : 1970:01:01 12:00:00+02:00
[Track1] MediaCreateDate : 1970:01:01 12:00:00+02:00
[Track1] MediaModifyDate : 1970:01:01 12:00:00+02:00
[Track2] TrackCreateDate : 1970:01:01 12:00:00+02:00
[Track2] TrackModifyDate : 1970:01:01 12:00:00+02:00
[Track2] MediaCreateDate : 1970:01:01 12:00:00+02:00
[Track2] MediaModifyDate : 1970:01:01 12:00:00+02:00
[Microsoft] EncodingTime : 1970:01:01 12:00:00+02:00
[Microsoft] DateAcquired : 1970:01:01 12:00:00
[UserData] DateTimeOriginal : 1970:01:01 12:00:00+02:00
[ItemList] ReleaseDate : 1970:01:01 12:00:00
[ItemList] ContentCreateDate : 1970:01:01 12:00:00+02:00
[Keys] CreationTime : 1970:01:01 12:00:00+02:00
[Keys] CreationDate : 1970:01:01 12:00:00+02:00
[Keys] LocationDate : 1970:01:01 12:00:00+02:00
[Keys] Year : 1970:01:01 12:00:00
exiftool -overwrite_original -api LargeFileSupport=1 '-QuickTime:Time:All-=20:0:0 00:00:00' movie.mp4
1 image files updated
exiftool -a -G1 -s -api LargeFileSupport=1 -api QuickTimeUTC=1 -Time:All movie.mp4
[QuickTime] CreateDate : 1950:01:01 12:00:00+02:00
[QuickTime] ModifyDate : 1950:01:01 12:00:00+02:00
[Track1] TrackCreateDate : 1950:01:01 12:00:00+02:00
[Track1] TrackModifyDate : 1950:01:01 12:00:00+02:00
[Track1] MediaCreateDate : 1950:01:01 12:00:00+02:00
[Track1] MediaModifyDate : 1950:01:01 12:00:00+02:00
[Track2] TrackCreateDate : 1950:01:01 12:00:00+02:00
[Track2] TrackModifyDate : 1950:01:01 12:00:00+02:00
[Track2] MediaCreateDate : 1950:01:01 12:00:00+02:00
[Track2] MediaModifyDate : 1950:01:01 12:00:00+02:00
[Microsoft] EncodingTime : 1950:01:01 12:00:00+02:00
[Microsoft] DateAcquired : 2319:01:01 12:00:00
[UserData] DateTimeOriginal : 1950:01:01 12:00:00+02:00
[ItemList] ReleaseDate : 1970:01:01 12:00:00
[ItemList] ContentCreateDate : 1950:01:01 12:00:00+02:00
[Keys] CreationTime : 1950:01:01 12:00:00+02:00
[Keys] CreationDate : 1950:01:01 12:00:00+02:00
[Keys] LocationDate : 1950:01:01 12:00:00+02:00
[Keys] Year : 1970:01:01 12:00:00
exiftool -overwrite_original -api LargeFileSupport=1 '-QuickTime:Time:All-=20:0:0 00:00:00' movie.mp4
1 image files updated
exiftool -a -G1 -s -api LargeFileSupport=1 -api QuickTimeUTC=1 -Time:All movie.mp4
[QuickTime] CreateDate : 1996:01:02 12:00:00+02:00
[QuickTime] ModifyDate : 1996:01:02 12:00:00+02:00
[Track1] TrackCreateDate : 1996:01:02 12:00:00+02:00
[Track1] TrackModifyDate : 1996:01:02 12:00:00+02:00
[Track1] MediaCreateDate : 1996:01:02 12:00:00+02:00
[Track1] MediaModifyDate : 1996:01:02 12:00:00+02:00
[Track2] TrackCreateDate : 1996:01:02 12:00:00+02:00
[Track2] TrackModifyDate : 1996:01:02 12:00:00+02:00
[Track2] MediaCreateDate : 1996:01:02 12:00:00+02:00
[Track2] MediaModifyDate : 1996:01:02 12:00:00+02:00
[Microsoft] EncodingTime : 1930:01:01 12:00:00+02:00
[Microsoft] DateAcquired : 2299:01:01 12:00:00
[UserData] DateTimeOriginal : 1930:01:01 12:00:00+02:00
[ItemList] ReleaseDate : 1970:01:01 12:00:00
[ItemList] ContentCreateDate : 1930:01:01 12:00:00+02:00
[Keys] CreationTime : 1930:01:01 12:00:00+02:00
[Keys] CreationDate : 1930:01:01 12:00:00+02:00
[Keys] LocationDate : 1930:01:01 12:00:00+02:00
[Keys] Year : 1970:01:01 12:00:00
- Matti
Hi Matti,
Again, I shouldn't speak without testing things myself. You are correct, the pre-1970 dates get "fixed" to the proper epoch when shifting them without the QuickTimeUTC option.
The difference with different date/time tags is due to the different way they are stored. Only dates which are (properly) stored as seconds since January 1904 are affected. The other ones are probably stored as strings.
- Phil