Cela peut dépendre de l'appareil photo, du téléphone et du système d'exploitation, mais je ne pense pas que le fuseau horaire soit explicitement enregistré dans les métadonnées EXIF de la photo.
Dans certaines métadonnées, il existe un GPS Time (Atomic Clock)
qui est réglé sur UTC. Donc, Photos calcule probablement juste les décalages de Date and Time (Original)
pour afficher le fuseau horaire.
Vous pourrez peut-être utiliser exiftool pour établir une liste de ces deux moments pour vos photos, et rechercher les valeurs aberrantes qui sont plus (ou moins) différentes des autres.
Mise à jour de l'affiche originale :
J'ai élaboré un script Python rapide pour comparer ces heures, et imprimer celles qui ne sont pas dans le fuseau horaire attendu, ou qui ont des valeurs différentes pour les minutes. Vous devrez exporter les originaux non modifiés de Photos, puisque les originaux modifiés n'ont pas ces métadonnées, et ensuite passer leurs noms de fichiers à ce script.
Bien entendu, je n'ai aucune idée si cela correspond à ce que fait Photos pour régler le fuseau horaire. Mais il a correctement identifié les photos que je connaissais avec le mauvais fuseau horaire, et n'a pas trouvé de faux positifs.
#!/usr/bin/python
from subprocess import check_output
import sys, re, os
from dateutil.parser import parse
from datetime import datetime
expected_offset_hours = 8.0 # set to appropriate time zone offset
def get_field(out, name):
match = re.search("^" + re.escape(name) + "\t(.+?)$", out, re.MULTILINE)
if match:
return match.group(1)
return None
for arg in sys.argv[1:]:
if not os.path.exists(arg):
continue
out = check_output(["exif", "-m", arg])
gps_date = get_field(out, "GPS Date")
gps_time = get_field(out, "GPS Time (Atomic Clock)")
if gps_date == None or gps_time == None:
print arg + "\tNo GPS date/time"
continue
gps_parsed = datetime.strptime(gps_date + " " + gps_time, '%Y:%m:%d %H:%M:%S.%f')
orig_datetime = get_field(out, "Date and Time (Original)")
if orig_datetime == None:
continue
orig_parsed = datetime.strptime(orig_datetime, '%Y:%m:%d %H:%M:%S')
offset_secs = (orig_parsed - gps_parsed).total_seconds()
offset_hours = round(offset_secs / 3600)
offset_mins = abs(offset_secs - (offset_hours * 3600)) // 60
if offset_hours != expected_offset_hours or offset_mins > 0:
#print gps_date + ' ' + gps_time + ' ' + str(gps_parsed)
#print orig_datetime + ' ' + str(orig_parsed)
print arg + "\t" + str(offset_hours) + "\t" + str(offset_mins)