19 lines
818 B
AppleScript
19 lines
818 B
AppleScript
on isLongYear(y)
|
|
-- ISO8601 weeks begin on Mondays and belong to the year in which they have the most days.
|
|
-- A year which begins on a Thursday, or which begins on a Wednesday and is a leap year,
|
|
-- has majority stakes in the weeks it overlaps at *both* ends and so has 53 weeks instead of 52.
|
|
-- Leap years divisible by 400 begin on Saturdays and so don't so need to be considered in the leap year check.
|
|
|
|
tell (current date) to set {Jan1, its day, its month, its year} to {it, 1, January, y}
|
|
set startWeekday to Jan1's weekday
|
|
|
|
return ((startWeekday is Thursday) or ((startWeekday is Wednesday) and (y mod 4 is 0) and (y mod 100 > 0)))
|
|
end isLongYear
|
|
|
|
set longYears to {}
|
|
repeat with y from 2001 to 2100
|
|
if (isLongYear(y)) then set end of longYears to y
|
|
end repeat
|
|
|
|
return longYears
|