On 10/19/2021 10:38 PM, Michal Vlasák via ntg-context wrote:
I don't know how official these interfaces are. But you can try adapting the following to your use case.
\setupinteraction[state=start]
%\luacode{lpdf.settime("2020-02-02 12:00")} %\luacode{lpdf.settime(1580641221)}
\startluacode
local Y, M, D, h, m, s, Zs, Zh, Zm = string.match("D:20200202120021+02'00'", "^D:(%d%d%d%d)(%d%d)(%d%d)(%d%d)(%d%d)(%d%d)([%+%-])(%d%d)%'(%d%d)%'$")
local time = os.time{year=Y,month=M,day=D,hour=h,min=m,sec=s} lpdf.settime(time) \stopluacode
\starttext This document is from 02.02.2020 at 12:00:21. \stoptext
The pattern doesn't catch all the PDF spec cases, but should match what ConTeXt emits. The timezone info gets overwritten by current timezone though.
Requires the below patch.
Michal
--- a/tex/context/base/mkiv/core-con.lua +++ b/tex/context/base/mkiv/core-con.lua @@ -1991,7 +1991,7 @@ function converters.totime(s) end local n = tonumber(s) if n and n >= 0 then - return date("*t",n) + return osdate("*t",n) end end
diff --git a/tex/context/base/mkxl/lpdf-ini.lmt b/tex/context/base/mkxl/lpdf-ini.lmt index 7979b80..9703ac0 100644 --- a/tex/context/base/mkxl/lpdf-ini.lmt +++ b/tex/context/base/mkxl/lpdf-ini.lmt @@ -1123,7 +1123,7 @@ do n = converters.totime(n) if n then converters.settime(n) - timestamp = osdate("%Y-%m-%dT%X") .. ostimezone(true) -- probably not ok + timestamp = osdate("%Y-%m-%dT%X", ostime(n)) .. ostimezone(true) -- probably not ok end end if metadata then i'll fix it but also clean up the existing code a bit
(much has to do with omitting date and is for comparison reasons) Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------