Loading Pyodide runtime…
Reproduction script
import sys
import dateutil
from dateutil.parser import parse
STAMP = "2026-03-11 14:32:45"
CASES = [("UTC-4", -4), ("UTC+4", +4), ("UTC-04:00", -4), ("UTC+04:00", +4)]
def offset(seconds):
sign = "-" if seconds < 0 else "+"
return f"{sign}{abs(seconds) // 3600:02d}:{abs(seconds) % 3600 // 60:02d}"
results = []
for spec, expected_hours in CASES:
expected = expected_hours * 3600
actual = int(parse(f"{STAMP} {spec}").utcoffset().total_seconds())
results.append(
{
"input": spec,
"expected_offset_seconds": expected,
"actual_offset_seconds": actual,
"inverted": actual == -expected and actual != expected,
}
)
print(f"parse('{STAMP} <input>').utcoffset()")
print()
print(f"{'input':<12}{'expected':>10}{'actual':>10}")
for row in results:
flag = " <-- sign flipped" if row["inverted"] else ""
print(
f"{row['input']:<12}"
f"{offset(row['expected_offset_seconds']):>10}"
f"{offset(row['actual_offset_seconds']):>10}{flag}"
)
print()
flipped = sum(row["inverted"] for row in results)
print(f"{flipped} of {len(results)} UTC-prefixed offsets came back negated.")
print(f"python-dateutil {dateutil.__version__} / Python {sys.version.split()[0]}")
Baseline output
Initialising…
(pending)
Fix-candidate output
(waiting for baseline)