Numlex Dokumentation
Syntaxreferenz
Problem melden

Datums- & Zeitangaben

Die vollständige temporale Referenz: Kalenderdaten, Dauern-Arithmetik, Uhren, Zeitzonen, Zeitstempel/ISO, Timespan, Video-Timecode, Arbeitskalender und besondere Daten.

Numlex behandelt Datum und Uhrzeit als erstklassige Größen mit einer strengen, begrenzten Grammatik. Eine Zeile passt entweder exakt zu einem Datums- oder Zeitmuster oder bleibt gewöhnlicher Text: May 5 + 3 weeks funktioniert, May 5 + 43 ist ein Fehler, und ein einzelnes Monatswort ist kein Datum. Kalenderarithmetik arbeitet komponentenweise auf dem lokalen gregorianischen Kalender, sodass Sommerzeitwechsel einen Tag nicht verschieben können.

Diese Seite ist die vollständige temporale Referenz: Kalenderdaten, Dauern-Arithmetik, Uhren und Laptime, Zeitzonen, Zeitstempel und ISO 8601, die Timespan-Notation, Video-Timecode und Frames, Arbeitskalender, besondere Daten, ihre Abhängigkeit von den Einstellungen und die strengen Fehlerregeln.

Kalenderdaten

<date> [ <sign> <integer> <duration> ... ]
<date>     := today | tomorrow | yesterday
             | <month> <day>
             | <month> <day>, <year>
             | <day> <month> [<year>]
<duration> := day(s) | week(s) | month(s) | year(s)

Alle Wörter sind englisch und unabhängig von der Groß-/Kleinschreibung; das Vorzeichen ist + oder − (ASCII - funktioniert ebenfalls). Monate, abgekürzt und vollständig:

#AbkürzungenVollständiger Name
1janjanuary
2febfebruary
3marmarch
4aprapril
5maymay
6junjune
7juljuly
8augaugust
9sep, septseptember
10octoctober
11novnovember
12decdecember

today, tomorrow und yesterday lösen sich gegen das erfasste lokale Datum auf und lassen sich mit Dauern kombinieren. Zusammengesetzte Zeiträume werden Kalenderkomponente für Komponente angewendet: March 12 + 3 weeks 2 days → Apr 4, May 10 - 1 week 3 days. Jede Komponente ist auf 1.000.000 begrenzt.

Das Ergebnis zeigt das Jahr, wenn die Eingabe eines angibt oder wenn es außerhalb des Eingabejahrs liegt. Der Anker ist lokaler Mittag, sodass DST-Wechsel den Tag nie verschieben.

today                       → today (per the local calendar)
tomorrow + 1 month
yesterday - 2 weeks
May 5                       → May 5 (current year)
May 5, 2026 + 30 days       → Jun 4, 2026
5 May 2026
dec 31

Fehler in der Datumssyntax:

  • Zeiträume über 1.000.000 sind ein stiller Fehler.
  • Feb 30 sieht wie ein Datum aus, ist aber ungültig – ein stiller Fehler.
  • May 5 + 43 (eine Zahl ohne Dauerwort) ist ein Fehler und wird nie zu normaler Arithmetik reduziert.
  • May 5 + 43 days extra – ein Zusatz nach einem gültigen Datum – ist ein Fehler.
  • Ein einzelnes Monatswort (may) ist kein Datum; es bleibt Text.

Dauern-Arithmetik

Mehrere feste Zeiteinheiten hintereinander werden als eine Dauer gelesen:

  • 1 h 45 min, 1 hour 45 minutes, 2 hr 5 mins, 1 day 2 hours 30 min, 1 min 250 ms, 1 week 2 days.
  • Sichere zusammengeklebte Formen: 1h45min, 45min, 30sec, 500ms, 2hr, 2wks, 1day2hours30min. Zusammengeklebte Aliase stammen nur aus einer Whitelist (ms s sec secs second(s) min mins minute(s) h hr hrs hour(s) day(s) week(s) wk wks); ein einzelnes zusammengeklebtes m ist nie Minuten (5m = 5.000.000, nicht Meter), und ein einzelnes zusammengeklebtes s wird nicht akzeptiert.
  • Zusammengesetzte Dauern nutzen die festen Einheiten von ms bis week. Mittlere Kalendereinheiten (mo, yr, quarter (time)) und fremde Einheiten werden nicht implizit zusammengesetzt: 1 m 20 cm ist ein Fehler, 1 mo 2 days wird nicht zusammengesetzt.

Komponenten dürfen in beliebiger Reihenfolge stehen und sich wiederholen; die Werte werden addiert. Die Gruppe wird vor Multiplikation oder Division zu einem primären Operanden gebunden:

1 h 30 min / 3        → 30 min        (not 1 h 10 min)
(1 h 20 min) × 2      → 2 h 40 min
3 × (1 h 15 min)      → 3 h 45 min
1 h 45 min + 30 min   → 2 h 15 min
2 hr 10 min - 45 min  → 1 h 25 min
1 day 2 h + 90 min    → 1 day 3 h 30 min
1 week 2 days - 1 day → 1 week 1 day
2 min 30 sec × 3      → 7 min 30 s
1 min 250 ms + 750 ms → 1 min 1 s
1.5 h + 30 min        → 2 h

Eine Dauer bleibt eine echte typisierte Größe (Dimension T¹, eine echte Zeiteinheit, ihr Wert auf dieser Skala) – kein String und keine dimensionslosen Sekunden. Klammern, unäres Minus, Variablen und Konstanten mit Zeit funktionieren (focus time = 1 h 30 min, dann focus time + 15 min = 1 h 45 min), und Dauern lassen sich wie andere Größen tokenisieren.

Die Ausgabe nutzt eine natürliche kanonische Zerlegung (Wochen, Tage, Stunden, Minuten, Sekunden; Millisekunden für einen Subsekundenrest), lässt Nullkomponenten weg, normalisiert Überträge und druckt ein Vorzeichen: 2 h 15 min, 1 day 3 h 30 min, 7 min 30 s, -30 min, 500 ms. Eine explizite Konvertierung setzt die natürliche Form auf ein einheitliches Ergebnis zurück: 1 h 30 min to min = 90 min, 1 h 30 min in hours = 1.5 h, 1 h 30 min as seconds = 5400 s.

Geschwindigkeiten und abgeleitete Einheiten werden nie zu einer Dauer (90 km / 3 h = 30 km/h), und die Datumssyntax behält Vorrang (May 5 + 2 days ist ein Datum). Dauern haben keine Notations- oder Rundungssteuerung pro Antwort.

Uhren und Laptime

Die Uhrsyntax wird vor gemischten Einheiten und Datumszeilen geprüft:

3:30pm + 2 hours 15 minutes  → 5:45 pm
3:30pm - 2 hours 15 minutes  → 1:15 pm
11:30pm + 45 min             → Tomorrow 12:15 am
now + 3 hours 25 minutes     → local wall time + 3 h 25 min
01:02:03 + 01:09:54          → 02:11:57        (elapsed time / laptime)
00:00:01.5 + 00:00:01        → 00:00:02.50
7:30am to 8:45pm             → 13 h 15 min     (interval forward)
4pm to 3am                   → 11 h
3:30pm as laptime            → 15:30:00

Akzeptiert werden h:mm, h:mm:ss, h am/pm und 4pm; AM/PM ist unabhängig von der Groß-/Kleinschreibung und darf zusammengeklebt oder durch ein Leerzeichen getrennt sein. Minuten und Sekunden sind 0…59, die 12-Stunden-Uhr ist 1…12 und die 24-Stunden-Uhr ist 0…23 (25:00 ist ein strenger Fehler). Addition und Subtraktion arbeiten auf Wandkomponenten, sodass ein DST-Wechsel die angeforderten Minuten nie verschiebt und ein Tageswechsel Yesterday/Today/Tomorrow ausgibt. clock + clock (3:30pm + 3:30pm) ist ein strenger Fehler; ein bloßes h:mm:ss ohne AM/PM bleibt verstrichene Zeit statt Tageszeit. Die Anzeige folgt der Region: 12 Stunden für legacy/Nordamerika, 24 Stunden für Europa, der Stundenzyklus des Gebietsschemas für System. Uhrzeilen sind vom Total ausgeschlossen, haben keine Notation und Rundung (nur Copy/Delete) und können keine numerischen Tokens werden.

Zeitzonen

time in Paris                 → current time in the zone
Tokyo time                    → same, "<place> time" form
date in Vancouver             → date in the zone
6pm Sydney in Chicago         → 3:00 am
2am PST to GMT                → 10:00 am
3pm GMT+8 to Paris            → 9:00 am
7:30am LAX to Japan           → 11:30 pm
time difference between Chicago and Paris → 7 h
difference between PDT & AEST → 17 h

Eine Quelle wird über den vollständigen Offline-Katalog aufgelöst: IANA-IDs und -Aliase, Städte (mit dem Qualifier City, CC), Ländernamen, Ländercodes, IATA/ICAO-Codes, feste Abkürzungen (EST/EDT/CST/CDT/MST/MDT/PST/PDT/AKST/AKDT/HST, AEST/AEDT/ACST/ACDT/AWST/NZST/ NZDT/BST/CET/CEST/EET/EEST/MSK/JST/KST/HKT/SGT) sowie GMT/UTC/GMT±H[:MM]. Die Wandzeit der Quelle wird an das erfasste Datum in ihrer Zone gebunden, in einen einzigen absoluten Zeitpunkt umgerechnet und in der Zielzone angezeigt, sodass A → B → A den Zeitpunkt bewahrt; echte DST-Wechsel werden beachtet, und eine nicht existierende Quellzeit ist ein strenger Fehler. Ein unbekannter Ort in einer Zeitzonenzeile ist ein strenger Fehler. Ein bloßes 6pm, Datums- und Geo-Zeilen bleiben in ihren Spuren. Benutzerdefinierte Aliase (Einstellungen → Dates & Times) überschreiben nur bekannte Namen/IANA-IDs und leben in der App – nie in .nlx.

Offline-Zeitzonenkatalog

Die App enthält einen Zeitzonenkatalog (etwa 1 MB): IANA-IDs und -Aliase, Städte mit mindestens 100.000 Einwohnern, Land → Hauptstadtzone, IATA/ICAO → Zone. Die Daten stammen aus öffentlichen Quellen (IANA tzdata, GeoNames, airportsdata) und werden vollständig offline genutzt; ein Netzwerk ist nicht nötig.

Zeitstempel und ISO 8601

Die strenge Zeitstempelspur läuft vor Einheitenkonvertierungen und dem normalen Datums-Fallback:

current timestamp                    → 1,554,112,800   (number from captured now)
April 1, 2019 3:30pm as iso8601      → 2019-04-01T15:30:00+02:00
2019-04-01T15:30:00 to date          → Apr 1, 2019 3:30:00 pm
April 1, 2019 to timestamp           → 1,554,112,800
1559740303.48 to date                → Jun 5, 2019 3:11:43 pm
1733823083000 to date                → Dec 10, 2024 10:31:23 am

Sekunden sind Unix-Zeit ab 1970-01-01T00:00:00Z; endliche Bruchwerte sind erlaubt. Die Millisekundenschwelle: Werte ab 1e12 werden als Millisekunden behandelt (1733823083000 to date). Ein Datum ohne Uhrzeit, das an to timestamp gebunden wird, ankert auf lokalen Mittag (DST-sicher). Die ISO-Form akzeptiert Z, ±HH:MM, optionale Sekunden und Bruchteile; ein expliziter Offset bleibt als Darstellungszone erhalten, sonst wird deine lokale Zone verwendet. Die ISO-Ausgabe ist yyyy-MM-dd'T'HH:mm:ssXXX; die Datum-Zeit-Ausgabe folgt dem regionalen 12/24-Stunden-Stil mit fester englischer Reihenfolge (Apr 1, 2019 3:30 pm). Ungültige, nicht existierende (DST-Lücke) und überlaufende Werte sind strenge Fehler. Datums-/ISO-Zeilen sind vom Inline- und Footer-Total sowie von der numerischen Previous-Answer-Kette ausgeschlossen; Tokens darauf bleiben sicher inaktiv.

Timespan

Die Timespan-Notation wird global (Numbers → Default answer format) oder pro Antwort (Number Format im Kontextmenü) gewählt und gilt nur für Größen der Zeitdimension; jede Nicht-Zeit-Zahl fällt auf Automatic zurück. Das explizite Suffix as timespan funktioniert unabhängig von der Einstellung:

5.5 minutes as timespan   → 5 min 30 s
4.54 hours as timespan    → 4 hours 32 minutes 24 seconds
72 days as timespan       → 10 weeks 2 days
3 hours 5 minutes 10 seconds → 3 h 5 min 10 s
3h 5m 10s in seconds      → 11,110 s

Der Formatierer zerlegt gierig mit den mittleren Einheiten yr = 365.2425 d und mo = 30.436875 d, dann Wochen, Tage, Stunden, Minuten, Sekunden und ms; er druckt eine Nachkommastelle, lässt Nullkomponenten weg und trägt Rundung in die größte Komponente. Die mittleren yr/mo sind nur lineare Faktoren: Kalenderarithmetik (+ 1 month) nutzt weiterhin Calendar-Komponenten. Grammatik zusammengeklebter Einheiten: Innerhalb einer bereits bewiesenen Dauerkette 3h 5m 10s bedeuten m und s Minuten und Sekunden; einzelne 5m (5.000.000), 5 m (Meter) und 10s bleiben unverändert. in seconds/in minutes/… setzt auf eine einheitliche Standarddarstellung zurück. Dieselbe typisierte Grammatik bedient normale Zeilen, Zuweisungen und Answer-Token-Ausdrücke.

Video-Timecode und Frames

Die strenge Timecode-Spur läuft vor der Uhr- und der gemischten Spur:

03:10:20:05 at 30 fps + 50 frames        → 03:10:21:25
00:10:20:50 @ 60 fps + 10 minutes        → 00:20:20:50
00:30:10:00 @ 24 fps in frames           → 43,440 frames
43,440 frames @ 24 fps                   → 00:30:10:00
03:10:20:05 at 30 fps + 03:10:20:010     → 06:20:40:15
03:10:20:05 at 12 fps - 00:20:35:00      → 02:49:45:05
30 fps × 3 minutes                       → 5,400 frames
15.6k frames / 24 fps                    → 650 s

Frames werden exakt gezählt (nie über gerundete Sekunden): fps ist eine ganze Zahl von 1 bis 1000, und Drop-Frame-Syntax gibt es nicht. Innerhalb eines Timecode-Ausdrucks bedeutet fps Frames pro Sekunde; außerhalb bleibt der frühere Geschwindigkeitsalias fps = ft/s erhalten. FPS ist bei jeder Operation erforderlich; Frequenzkonflikte, fehlende fps, Bereichsverletzungen, Frame-Überlauf und defekte Codes sind strenge Fehler. Das Frame-Feld normalisiert Überträge und wird mit mindestens zwei Ziffern ausgegeben (die Eingabe :010 wird akzeptiert). Timecode- und Frame-Zeilen sind vom Total, der Rundung und der numerischen Previous-Answer-Kette ausgeschlossen; Tokens darauf sind inaktiv.

Arbeitskalender und Feiertage

Ein Arbeitstag ist Montag–Freitag abzüglich der gesetzlichen Feiertage der gewählten Region. Datumsbereiche sind start-exclusive/end-inclusive; ein fehlendes Jahr nutzt das erfasste aktuelle Jahr. Eine nicht unterstützte Region oder ein nicht unterstütztes Jahr ist ein strenger Fehler statt eines stillen Feiertagsauslasses.

workdays in 3 weeks                  → 15 workdays
10 March to 17 March in workdays     → 5 workdays
workdays from April 12 to June 15    → 44 workdays
$500/workday × 4 weeks               → $10,000.00
work hours in June                   → 6 day 16 h
work hours between March 12 and March 25 → 3 day
55h in work days                     → 6.875 workdays
December 24 + 2 workdays             → Dec 29

Aliase: workday(s), work day(s), business day(s), weekday(s); die Abfrage weekday on <date> und normaler Text werden nicht erfasst. Undatierte Wochen zählen fünf Arbeitstage pro Woche. Arbeitsstunden sind typisierte Dauern; ein Geldbetrag pro Arbeitstag behält seine Währungsform; die Stunden pro Arbeitstag stammen aus den Einstellungen (1…24). Feiertage kommen aus dem integrierten Offline-Katalog (25 Länder, 2019–2035); es wird kein Netzwerk genutzt, und eine Region oder ein Jahr außerhalb des Katalogs ist ein Fehler.

Besondere Daten

Diese besonderen Daten sind integriert:

Easter               → Apr 20        (captured current year)
Easter 2027          → Mar 28, 2027
Christmas            → Dec 25
days until Christmas → 344 days
days until Easter    → 95 days
Easter 2027 + 2 days → Mar 30, 2027

Ostern nutzt den verifizierten gregorianischen Computus; das nächste Vorkommen für days until nimmt das diesjährige Datum, wenn es noch in der Zukunft liegt, sonst das des Folgejahrs. Ein unbekannter Feiertagsname (days until Festivus) ist ein strenger Fehler, und Text mit christmas/easter wird nicht erfasst. Weihnachten ist immer der 25. Dezember.

Abhängigkeiten von den Einstellungen

Datum und Uhrzeit werden aus einem pro Blatt erfassten now, dem lokalen gregorianischen Kalender und der Zone sowie dem regionalen Stundenstil (12/24) berechnet: legacy/Nordamerika ist 12-stündig, West-/Osteuropa ist 24-stündig, System folgt dem Stundenzyklus des Gebietsschemas.

Die persistierten Datums-/Uhrzeit-Einstellungen sind:

  • Hours per workday (1…24, Standard 8), genutzt von Arbeitsstunden und Arbeitstag-Konvertierungen.
  • Holiday region (Standard automatic); Arbeitstage überspringen die gesetzlichen Feiertage dieser Region, und nicht unterstützte Regionen schlagen in datierten Arbeitstagsabfragen streng fehl.
  • Benutzerdefinierte Zeitzonen, bis zu 100, jeweils mit Name und IANA-ID.

Diese Einstellungen sind app-global und gelangen nie in einen .nlx-Export oder in ein Blatt.

Summen, Tokens und Fehler

  • Uhr-, Datums-, Zeitstempel-/ISO- und Timecode-Zeilen sind vom Inline- und Footer-Total ausgeschlossen, haben keine Notation und Rundung und treten nicht in die numerische Previous-Answer-Kette ein (Tokens darauf bleiben inaktiv).
  • Dauern sind echte typisierte Größen: Sie propagieren durch Variablen, Konstanten und Tokens und verhalten sich in Ausdrücken wie andere Größen.
  • Unbekannte Orte, nicht unterstützte Arbeitstagsregionen/-jahre, ungültige oder nicht existierende Daten, ungültige Uhrwerte, fehlende fps und überlaufende Werte sind strenge Fehler – nie eine geratene Zahl.

Verwandte Themen

Einen Fehler in dieser Dokumentation gefunden? Auf GitHub melden