DedSec Project

Αμφισημία θερινής ώρας και συμβόλαια προγραμματισμού — DedSec Project

Αμφισημία θερινής ώρας και συμβόλαια προγραμματισμού Μηχανισμός και συμβόλαιο Μια τοπική ώρα δεν αντιστοιχεί πάντα σε μία χρονική στιγμή. Στην επιστροφή από θερινή ώρα η ίδια ένδειξη…

Μηχανισμός και συμβόλαιο

Μια τοπική ώρα δεν αντιστοιχεί πάντα σε μία χρονική στιγμή. Στην επιστροφή από θερινή ώρα η ίδια ένδειξη εμφανίζεται δύο φορές, ενώ στην αντίθετη μετάβαση ένα εύρος ενδείξεων δεν εμφανίζεται. Μια naive datetime χάνει ζώνη και πληροφορία αμφισημίας που απαιτούνται για ερμηνεία ραντεβού.

Διαχώρισε χρονική στιγμή από επαναλαμβανόμενο κανόνα πολιτικής ώρας. Ένα συμβάν καταγράφεται ως UTC και προβάλλεται σε ζώνη. Το «κάθε μέρα 09:00 στην Αθήνα» είναι κανόνας του οποίου η μετατόπιση UTC αλλάζει. Κατάγραψε αναγνωριστικό ζώνης και ρητή πολιτική για ανύπαρκτες ή διπλές ώρες. Οι βάσεις ζωνών εξελίσσονται· κράτησε έκδοση όταν απαιτείται αναπαραγωγιμότητα.

Τοπικό παράδειγμα

from datetime import datetime, timezone
from zoneinfo import ZoneInfo
zone = ZoneInfo("America/Los_Angeles")
a = datetime(2020, 11, 1, 1, 30, tzinfo=zone, fold=0)
b = a.replace(fold=1)
assert a.utcoffset() != b.utcoffset()
assert (b.astimezone(timezone.utc) - a.astimezone(timezone.utc)).total_seconds() == 3600
print(a.isoformat(), b.isoformat())

Έλεγχοι αποτυχίας και όρια

Το ιστορικό δείγμα απαιτεί εγκατεστημένη βάση IANA ή το πακέτο tzdata. Αν λείπει, ανάφερε την εξάρτηση αντί να υποκαταστήσεις την τοπική ζώνη μηχανήματος. Δοκίμασε και τις δύο τιμές fold και σύγκρινε στιγμές UTC. Η προσθήκη ζώνης με replace δεν απορρίπτει από μόνη της ανύπαρκτο ραντεβού· έλεγξε με μετατροπή προς UTC και πίσω και εφάρμοσε την πολιτική προγραμματισμού.

Πρωτογενής αναφορά

Επίσημη τεκμηρίωση