Ich muss in ConTeXt oft das Datum anzeigen, aber nicht für heute, wie mit angezeigt \date
, sondern für den nächsten Tag. Wie drucke ich stattdessen das Datum von morgen?
ZB 7. August 2019
Antwort1
Machen Sie es in Lua. Die Funktionos.time()
gibt Ihnen die aktuelle Zeit als POSIX-Zeitstempel, also die Anzahl der Sekunden seit dem 1.1.1970. Addieren Sie die Anzahl der Sekunden eines Tages dazu, um die gleiche Zeit für morgen zu erhalten. Geben Sie dieses Ergebnis ein inos.date
. Normalerweise os.date
formatiert es ein Datum in eine Zeichenfolge, aber wenn das Formatargument ist "*t"
, gibt es eine Tabelle mit dem Zeitstempel zurück, der in sinnvolle Einheiten unterteilt ist. Daraus können Sie Tag, Monat und Jahr extrahieren und in die date
Funktion von ConTeXt einfügen.
Streng genommen funktioniert das nur auf einem POSIX-System, aber ich kenne kein System, das das tutnichtPOSIX-Zeitstempel verwenden. Dieser Ansatz sollte auch an Monats- und Jahresgrenzen und sogar bei Schaltjahren funktionieren. Das einzige Problem sindSchaltsekunden, denn wenn Sie dies genau bei einer Schaltsekunde ausführen, landen Sie möglicherweise am selben Tag statt am nächsten, aber diese kommen nur alle paar Jahre vor.
\starttext
\currentdate
\ctxlua{
local t = os.date("*t", os.time() + 24*60*60)
context.date{d = t.day, m = t.month, y = t.year}
}
\stoptext