我经常需要在 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