如何在 ConTeXt 中打印明天的日期?

如何在 ConTeXt 中打印明天的日期?

我经常需要在 ConTeXt 中显示日期,但不是今天的日期(如 所示)\date,而是第二天的日期。如何打印明天的日期?

例如 2019 年 8 月 7 日

答案1

在 Lua 中执行。函数os.time()以 POSIX 时间戳的形式给出当前时间,即自 1970 年 1 月 1 日以来的秒数。将一天中的秒数添加到该值中,即可得到明天的相同时间。将结果输入os.date。通常os.date将日期格式化为字符串,但如果格式参数为"*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

在此处输入图片描述

相关内容