Files
Chili Palmer 1c8dcbdf18 OpenSpec: phase-3-ortszeit archiviert, Delta-Specs gesynct
konsolen-basisbibliothek um drei Anforderungen erweitert: Zeitfunktionen
liefern Ortszeit, Zonenermittlung mit Rueckfallebene, Programmversatz
wirkt auf die Ortszeit.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-04 07:02:09 +02:00

2.8 KiB

ADDED Requirements

Requirement: Zeitfunktionen liefern Ortszeit

DATE$, TIME$, TIMER und NOW SHALL den Zeitpunkt in der Zeitzone des Rechners liefern, nicht in koordinierter Weltzeit. TIMER SHALL die Sekunden seit der lokalen Mitternacht zählen. Der maßgebliche Versatz SHALL für den jeweils abgefragten Zeitpunkt bestimmt werden, nicht einmal beim Programmstart — ein Programm, das über eine Zeitumstellung hinweg läuft, folgt ihr. Die Zerlegungsfunktionen (DAY, MONTH, YEAR, WEEKDAY, HOUR, MINUTE, SECOND) arbeiten unverändert auf seriellen Werten und rechnen selbst nicht um.

Scenario: Datum und Uhrzeit stimmen mit der Systemuhr überein

  • WHEN ein Programm DATE$ und TIME$ abfragt
  • THEN entsprechen sie der Ortszeit des Rechners zum Abfragezeitpunkt

Scenario: TIMER zählt ab lokaler Mitternacht

  • WHEN TIMER abgefragt wird
  • THEN entspricht der Wert den Sekunden seit der letzten lokalen Mitternacht, nicht seit der UTC-Mitternacht

Scenario: NOW und die Zerlegungsfunktionen passen zusammen

  • WHEN n# = NOW gebildet und HOUR(n#) ausgewertet wird
  • THEN liefert HOUR(n#) dieselbe Stunde, die auch TIME$ nennt

Scenario: Sommerzeit wirkt zum jeweiligen Zeitpunkt

  • WHEN in einer Zone mit Sommerzeit ein Zeitpunkt vor und einer nach der Umstellung abgefragt wird
  • THEN unterscheiden sich die beiden Versätze um die Umstellungsspanne

Requirement: Zonenermittlung mit Rückfallebene

Die Laufzeit SHALL die Zeitzone des Rechners über die Betriebssystemeinstellung bestimmen. Lässt sie sich nicht ermitteln, SHALL UTC gelten und das Programm ohne Fehler weiterlaufen. Ob die Rückfallebene greift, MUST für ein Programm erkennbar sein und in docs/sprachreferenz.md beschrieben stehen; ein stiller Wechsel auf UTC MUST NOT vorkommen.

Scenario: Zone nicht ermittelbar

  • WHEN die Zeitzone des Rechners nicht bestimmt werden kann
  • THEN rechnen die Zeitfunktionen in UTC und das Programm läuft ohne Fehler weiter

Scenario: Rückfallebene ist erkennbar

  • WHEN ein Programm den Zonenzustand abfragt
  • THEN unterscheidet die Antwort erkennbar zwischen ermittelter Zone und Rückfall auf UTC

Requirement: Programmversatz wirkt auf die Ortszeit

DATE$ = text$ und TIME$ = text$ SHALL weiterhin nicht die Systemuhr stellen, sondern einen programmeigenen Versatz setzen. Dieser Versatz SHALL auf die Ortszeit wirken: nach TIME$ = "10:20:30" nennt TIME$ diese Uhrzeit, und NOW, HOUR und TIMER stimmen damit überein.

Scenario: Gesetzte Uhrzeit wird zurückgelesen

  • WHEN TIME$ = "10:20:30" ausgeführt und danach TIME$ abgefragt wird
  • THEN nennt TIME$ 10:20:30

Scenario: Versatz wirkt auf alle Zeitfunktionen

  • WHEN DATE$ = "01-02-1993" gesetzt und danach YEAR(NOW) ausgewertet wird
  • THEN liefert YEAR(NOW) 1993