ConTeXt で明日の日付を印刷するにはどうすればいいですか?

ConTeXt で明日の日付を印刷するにはどうすればいいですか?

ConTeXt で日付を表示しなければならないことがよくありますが、 で表示される今日の日付ではなく、\date翌日の日付を表示します。代わりに明日の日付を印刷するにはどうすればよいでしょうか。

例:2019年8月7日

答え1

Luaでやってみましょう。関数os.time()現在の時刻をPOSIXタイムスタンプ、つまり1970年1月1日からの秒数で返します。これに1日の秒数を加えると、明日の同じ時刻が得られます。その結果をos.date通常はos.date日付を文字列にフォーマットしますが、format 引数が の場合は"*t"、タイムスタンプを適切な単位に区切ったテーブルを返します。そこから日、月、年を抽出し、ConTeXt の関数に組み込むことができますdate

厳密に言えば、これはPOSIXシステムでのみ機能しますが、それが機能するシステムは知りません。ないPOSIXタイムスタンプを使用します。このアプローチは月と年の境界、さらには閏年でも機能します。唯一の問題はうるう秒なぜなら、これをうるう秒に合わせて実行すると、明日ではなく同じ日になってしまう可能性があるからです。しかし、これは数年に一度しか発生しません。

\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

ここに画像の説明を入力してください

関連情報