Allow timezone procs to be closures

This commit is contained in:
Oscar Nihlgård
2018-01-05 09:49:46 +01:00
parent 8bcaadc9e4
commit c344fb311d
2 changed files with 26 additions and 2 deletions

View File

@@ -281,6 +281,30 @@ suite "ttimes":
test "parseTest":
runTimezoneTests()
test "dynamic timezone":
proc staticOffset(offset: int): Timezone =
proc zoneInfoFromTz(adjTime: Time): ZonedTime =
result.isDst = false
result.utcOffset = offset
result.adjTime = adjTime
proc zoneInfoFromUtc(time: Time): ZonedTime =
result.isDst = false
result.utcOffset = offset
result.adjTime = fromUnix(time.toUnix - offset)
result.name = ""
result.zoneInfoFromTz = zoneInfoFromTz
result.zoneInfoFromUtc = zoneInfoFromUtc
let tz = staticOffset(-9000)
let dt = initDateTime(1, mJan, 2000, 12, 00, 00, tz)
check dt.utcOffset == -9000
check dt.isDst == false
check $dt == "2000-01-01T12:00:00+02:30"
check $dt.utc == "2000-01-01T09:30:00+00:00"
check $dt.utc.inZone(tz) == $dt
test "isLeapYear":
check isLeapYear(2016)
check (not isLeapYear(2015))