"""Bits & Decisions – Zeitstempel-Probe mit konstruierten Beispieldaten.

Aufruf: python3 zeitstempel-probe.py
Voraussetzung: Python 3.9 oder neuer mit IANA-Zeitzonendaten.
Falls dem System die Zeitzonendaten fehlen: python3 -m pip install tzdata

Erwartete Ausgabe:
Ereignis | Ortszeit | Ortszeit mit Offset | UTC
A | 2026-10-25T02:40:00 | 2026-10-25T02:40:00+02:00 | 2026-10-25T00:40:00+00:00
B | 2026-10-25T02:10:00 | 2026-10-25T02:10:00+01:00 | 2026-10-25T01:10:00+00:00
C | 2026-10-25T02:40:00 | 2026-10-25T02:40:00+01:00 | 2026-10-25T01:40:00+00:00
Ortszeit (Text) ['B', 'A', 'C']
Ortszeit mit Offset (Text) ['B', 'C', 'A']
UTC (Zeitpunkt) ['A', 'B', 'C']
Minuten A bis C 60.0
"""

from datetime import datetime, timezone
from zoneinfo import ZoneInfo


berlin = ZoneInfo("Europe/Berlin")
utc_times = {
    "A": datetime(2026, 10, 25, 0, 40, tzinfo=timezone.utc),
    "B": datetime(2026, 10, 25, 1, 10, tzinfo=timezone.utc),
    "C": datetime(2026, 10, 25, 1, 40, tzinfo=timezone.utc),
}
local_times = {key: value.astimezone(berlin) for key, value in utc_times.items()}
with_offset = {key: value.isoformat() for key, value in local_times.items()}
local_only = {
    key: value.replace(tzinfo=None).isoformat()
    for key, value in local_times.items()
}

print("Ereignis | Ortszeit | Ortszeit mit Offset | UTC")
for key, utc_time in utc_times.items():
    print(key, local_only[key], with_offset[key], utc_time.isoformat(), sep=" | ")

print("Ortszeit (Text)", sorted(local_only, key=local_only.get))
print("Ortszeit mit Offset (Text)", sorted(with_offset, key=with_offset.get))
print("UTC (Zeitpunkt)", sorted(utc_times, key=utc_times.get))
print("Minuten A bis C", (utc_times["C"] - utc_times["A"]).total_seconds() / 60)
