Muitas vezes tenho que exibir a data no ConTeXt, mas não para hoje, como é exibido com \date
, mas para o dia seguinte. Como imprimir a data de amanhã?
Por exemplo, 7 de agosto de 2019
Responder1
Faça isso na Lua. A funçãoos.time()
fornece a hora atual como um carimbo de data / hora POSIX, ou seja, o número de segundos desde 01/01/1970. Adicione o número de segundos em um dia para obter a mesma hora, mas amanhã. Alimente esse resultado emos.date
. Normalmente os.date
formata uma data em uma string, mas se o argumento de formato for "*t"
, ele retorna uma tabela com o carimbo de data/hora separado em unidades sensíveis. A partir disso você pode extrair o dia, mês e ano e conectá-los à date
função do ConTeXt.
A rigor, isso só funciona em um sistema POSIX, mas não conheço nenhum sistema que funcionenãouse carimbos de data/hora POSIX. Essa abordagem também deve funcionar nos limites de mês e ano e até mesmo em anos bissextos. O único problema sãosegundos bissextos, porque se você executar isso exatamente em um segundo bissexto, poderá acabar no mesmo dia em vez de amanhã, mas isso ocorre apenas a cada poucos anos.
\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