From 2d3beb45eff1386badd05a8689f3476af0aa71fc Mon Sep 17 00:00:00 2001 From: ARATA Mizuki Date: Mon, 7 Oct 2024 22:16:17 +0900 Subject: [PATCH] Lua: Use a different epoch to avoid negative Unix time --- lib/lunarml/ml/basis/lua/time.sml | 5 +++-- lib/lunarml/ml/basis/luajit/time.sml | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/lunarml/ml/basis/lua/time.sml b/lib/lunarml/ml/basis/lua/time.sml index 90bfe09..d7dc0f3 100644 --- a/lib/lunarml/ml/basis/lua/time.sml +++ b/lib/lunarml/ml/basis/lua/time.sml @@ -28,9 +28,10 @@ signature TIME = sig *) end; local + (* Avoid 1970-01-01 00:00:00 in local time, which might be negative *) val epoch = LunarML.assumeDiscardable (fn () => let val t = Lua.newTable () - in Lua.setField (t, "year", Lua.fromInt 1970) + in Lua.setField (t, "year", Lua.fromInt 2001) ; Lua.setField (t, "month", Lua.fromInt 1) ; Lua.setField (t, "day", Lua.fromInt 1) ; Lua.setField (t, "hour", Lua.fromInt 0) @@ -91,7 +92,7 @@ fun toLuaTime (x : int) : Lua.value val hour = hour' mod 24 val day' = hour' div 24 val t = Lua.newTable () - in Lua.setField (t, "year", Lua.fromInt 1970) + in Lua.setField (t, "year", Lua.fromInt 2001) ; Lua.setField (t, "month", Lua.fromInt 1) ; Lua.setField (t, "day", Lua.fromInt (day' + 1)) ; Lua.setField (t, "hour", Lua.fromInt hour) diff --git a/lib/lunarml/ml/basis/luajit/time.sml b/lib/lunarml/ml/basis/luajit/time.sml index 6a562d2..4744d2d 100644 --- a/lib/lunarml/ml/basis/luajit/time.sml +++ b/lib/lunarml/ml/basis/luajit/time.sml @@ -28,9 +28,10 @@ signature TIME = sig *) end; local + (* Avoid 1970-01-01 00:00:00 in local time, which might be negative *) val epoch = LunarML.assumeDiscardable (fn () => let val t = Lua.newTable () - in Lua.setField (t, "year", Lua.fromInt 1970) + in Lua.setField (t, "year", Lua.fromInt 2001) ; Lua.setField (t, "month", Lua.fromInt 1) ; Lua.setField (t, "day", Lua.fromInt 1) ; Lua.setField (t, "hour", Lua.fromInt 0) @@ -91,7 +92,7 @@ fun toLuaTime (x : Int54.int) : Lua.value val hour = hour' mod 24 val day' = hour' div 24 val t = Lua.newTable () - in Lua.setField (t, "year", Lua.fromInt 1970) + in Lua.setField (t, "year", Lua.fromInt 2001) ; Lua.setField (t, "month", Lua.fromInt 1) ; Lua.setField (t, "day", Lua.fromInt54 (day' + 1)) ; Lua.setField (t, "hour", Lua.fromInt54 hour)