I agree, we're talking around in circles. Let me show you exactly what I am seeing. It looks to me as if the code is attempting some sort of merge between the XMP tags and the EXIF XML tags I mentioned in my original post.
First, here is a file that was written by a Samsung camera phone with GPS tags contains both values. I'm running on LInux, and I can use grep to show just the tags I am interested in:
exiftool -args ~/Pictures/20151209_104853\ GPS\ tagged.jpg | grep -i GPS | egrep -i "time|date"
-GPSTimeStamp=10:48:20
-GPSDateStamp=2015:12:09
-GPSDateTime=2015:12:09 10:48:20Z
Not surprisingly the two tag types contain the same time and date, albeit in slightly different formats.
With a file that contains no GPS tags at all:
exiftool -args ~/Pictures/100_0889.JPG | grep -i GPS | egrep -i "time|date"
(nothing gets through the grep patterns)
Attempt to add mismatched tags to that file:
exiftool ~/Pictures/100_0889.JPG -GPSTimeStamp=10:48:20 -GPSDateStamp=2015:12:09 -GPSDateTime="2011:11:11 11:11:11" -o foo.jpg
1 image files created
exiftool -args foo.jpg | grep -i GPS | egrep -i "time|date"
-GPSTimeStamp=10:48:20
-GPSDateStamp=2015:12:09
-GPSDateTime=2015:12:09 10:48:20Z
Notice that although I have set the GPSDateTime field to contain lots of 1s the value read back is the value set to the XMP tags, a couple of weeks ago.
If, on the other hand, I set one but not both of the XMP tags then it can contain a different value to the EXIF tag
rm foo.jpg
exiftool ~/Pictures/100_0889.JPG -GPSTimeStamp=10:48:20 -GPSDateTime="2011:11:11 11:11:11" -o foo.jpg
1 image files created
Image-ExifTool-10.00/exiftool -args foo.jpg | grep -i GPS | egrep -i "time|date"
-GPSTimeStamp=10:48:20
-GPSDateTime=2011:11:11 11:11:11
rm foo.jpg
exiftool ~/Pictures/100_0889.JPG -GPSDateStamp=2015:12:09 -GPSDateTime="2011:11:11 11:11:11" -o foo.jpg
1 image files created
exiftool -args foo.jpg | grep -i GPS | egrep -i "time|date"
-GPSDateStamp=2015:12:09
-GPSDateTime=2011:11:11 11:11:11
Further, if I take an input file that has both tags (I'll add them through your tool)
exiftool ~/Pictures/100_0889.JPG -GPSTimeStamp=10:48:20 -GPSDateStamp=2015:12:09 -GPSDateTime="2011:11:11 11:11:11" -o tagged.jpg
1 image files created
exiftool -args tagged.jpg | grep -i GPS | egrep -i "time|date"
-GPSTimeStamp=10:48:20
-GPSDateStamp=2015:12:09
-GPSDateTime=2015:12:09 10:48:20Z
And then attempt to remove just the GPSTimeStamp XMP tag by setting it to an empty value the GPSDateTime is also removed
rm foo.jpg
exiftool tagged.jpg -GPSTimeStamp= -o foo.jpg
1 image files created
exiftool -args foo.jpg | grep -i GPS | egrep -i "time|date"
-GPSDateStamp=2015:12:09
-GPSDateTime=2011:11:11 11:11:11
err... WTH? That wasn't what I expected. Suddenly the GPSDateTime EXIF tag has become visible, set to the value I set it to - and it's not showing the value it was showing in the input file. It does the same thing on setting GPSDateStamp to an empty value. Opening the file tagged.jpg with an editor shows it contains the text
<exif:GPSTimeStamp>2011-11-11T11:11:11</exif:GPSTimeStamp>
and also it contains the GPSDateStamp value elsewhere. (This is less obvious with these values, as there are lots of 2015:12:09 in there, so I had to set a different date. GSTimeStamp is hidden from a text editor as it is written in binary.)
So in this case it's the DISPLAY that's not working, not the setting of the tags - it's reporting a GPSTimeStamp value for the file which is not the same as the one in the XML metadata for that tag. Perhaps I've reported the wrong bug. Could you please attempt to reproduce this on your system? If you don't get the same results that would be very interesting.
But wait until after Christmas ;) you shouldn't have been working on the 25th!
Happy New Year!