Fix min & sec field defaults in os.time (#2436)

These defaults are wrongly set to 12. They should be 0 for parity with
stock Lua.
This commit is contained in:
sircfenner
2026-05-09 10:55:07 +01:00
committed by GitHub
parent defb713483
commit b23ac67702
2 changed files with 20 additions and 2 deletions
@@ -77,8 +77,8 @@ final class LuaDateTime {
var month = getField(table, "month", -1);
var day = getField(table, "day", -1);
var hour = getField(table, "hour", 12);
var minute = getField(table, "min", 12);
var second = getField(table, "sec", 12);
var minute = getField(table, "min", 0);
var second = getField(table, "sec", 0);
var time = LocalDateTime.of(year, month, day, hour, minute, second);
var isDst = getBoolField(table, "isdst");
@@ -143,6 +143,24 @@ describe("The os library", function()
local t2 = os.time { year = 2000, month = 10, day = 1, hour = 23, min = 10, sec = 19 }
expect(t1 - t2):eq(60 * 2 - 2)
end)
it("uses correct date table default for hour", function()
local t1 = os.time { year = 1970, month = 1, day = 1, hour = nil, min = 0, sec = 0 }
local t2 = os.time { year = 1970, month = 1, day = 1, hour = 12, min = 0, sec = 0 }
expect(t1):eq(t2)
end)
it("uses correct date table default for min", function()
local t1 = os.time { year = 1970, month = 1, day = 1, hour = 0, min = nil, sec = 0 }
local t2 = os.time { year = 1970, month = 1, day = 1, hour = 0, min = 0, sec = 0 }
expect(t1):eq(t2)
end)
it("uses correct date table default for sec", function()
local t1 = os.time { year = 1970, month = 1, day = 1, hour = 0, min = 0, sec = nil }
local t2 = os.time { year = 1970, month = 1, day = 1, hour = 0, min = 0, sec = 0 }
expect(t1):eq(t2)
end)
end)
describe("os.day", function()