Fixed dayOfWeekJulian, exported SecondScale

This commit is contained in:
coffeepots 2015-07-16 10:20:34 +01:00
commit a2f0fe03b6

View file

@ -1064,7 +1064,7 @@ proc countYearsAndDays(daySpan: int): tuple[years: int, days: int] =
result.days = days mod 365 result.days = days mod 365
type type
SecondScale = enum ssMinute, ssHour, ssDay, ssMonth, ssYear SecondScale* = enum ssMinute, ssHour, ssDay, ssMonth, ssYear
# these are very approximate beyond day # these are very approximate beyond day
const secondsIn*: array[SecondScale.low..SecondScale.high, int] =[ const secondsIn*: array[SecondScale.low..SecondScale.high, int] =[
@ -1099,10 +1099,7 @@ proc dayOfWeekJulian*(day, month, year: int): WeekDay =
y = year - a y = year - a
m = month + (12*a) - 2 m = month + (12*a) - 2
d = (5 + day + y + (y div 4) + (31*m) div 12) mod 7 d = (5 + day + y + (y div 4) + (31*m) div 12) mod 7
# The value of d is 0 for a Sunday, 1 for a Monday, 2 for a Tuesday, etc. so we must correct result = d.WeekDay
# for the WeekDay type.
if d == 0: return dSun
result = (d-1).WeekDay
proc decodeTime*(t: Time): TimeInfo = proc decodeTime*(t: Time): TimeInfo =
let let
@ -1252,3 +1249,8 @@ when isMainModule:
assert dayOfWeek(21, 9, 1970) == dMon assert dayOfWeek(21, 9, 1970) == dMon
assert dayOfWeek(1, 1, 2000) == dSat assert dayOfWeek(1, 1, 2000) == dSat
assert dayOfWeek(1, 1, 2021) == dFri assert dayOfWeek(1, 1, 2021) == dFri
# Julian tests
assert dayOfWeekJulian(21, 9, 1900) == dFri
assert dayOfWeekJulian(21, 9, 1970) == dMon
assert dayOfWeekJulian(1, 1, 2000) == dSat
assert dayOfWeekJulian(1, 1, 2021) == dFri