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>
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$undTIME$abfragt - THEN entsprechen sie der Ortszeit des Rechners zum Abfragezeitpunkt
Scenario: TIMER zählt ab lokaler Mitternacht
- WHEN
TIMERabgefragt 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# = NOWgebildet undHOUR(n#)ausgewertet wird - THEN liefert
HOUR(n#)dieselbe Stunde, die auchTIME$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 danachTIME$abgefragt wird - THEN nennt
TIME$10:20:30
Scenario: Versatz wirkt auf alle Zeitfunktionen
- WHEN
DATE$ = "01-02-1993"gesetzt und danachYEAR(NOW)ausgewertet wird - THEN liefert
YEAR(NOW)1993