Как напечатать завтрашнюю дату в ConTeXt?

Как напечатать завтрашнюю дату в ConTeXt?

Мне часто приходится отображать дату в ConTeXt, но не на сегодня, как отображается с \date, а на следующий день. Как вместо этого напечатать завтрашнюю дату?

Например, 7 августа 2019 г.

решение1

Сделай это в Lua. Функцияos.time()дает вам текущее время как временную метку POSIX, т.е. количество секунд с 1/1/1970. Добавьте к этому количество секунд в сутках, чтобы получить то же время, но завтра. Введите этот результат вos.date. Обычно os.dateформатирует дату в строку, но если аргумент формата равен "*t", он возвращает таблицу с временной меткой, разделенной на разумные единицы. Из нее можно извлечь день, месяц и год и вставить их в dateфункцию ConTeXt.

Строго говоря, это работает только в системе 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

введите описание изображения здесь

Связанный контент