For those who are curious, here is the basic function in AppleScript for calculating sunrise and sunset times given latitude, longitude, and time of day. I adapted it from
this document published by the NOAA.
____
-- Function to determine sunrise and setset times (in seconds) given latitude and logitude
on sunrise_sunset(lati, longi)
-- Query 'date' command for time zone. Convert time zone information into an offset specified in hours.
set timezoneoffset to do shell script "/bin/date +%z" as string
set hoursadjust to (first character of timezoneoffset) & (second character of timezoneoffset) & (third character of timezoneoffset) as number
set day_of_year to dayofyear()
set currentyear to (do shell script "/bin/date +%Y") as number
-- Calculate sunrise and sunset times in seconds. The following algorithm is accurate to within one minute without the need to query an external web service.
set days_in_year to 365
-- Check for leap year
if (currentyear mod 4) = 0 then
if (currentyear mod 100) is not equal to 0 or (currentyear mod 400) = 0 then set days_in_year to 366
end if
-- Calculate fractional year in degrees
set fractionalyear to 360 / days_in_year * (day_of_year)
set eqtime to 229.18 * (7.5E-5 + 0.001868 * (cosine_of(fractionalyear)) - 0.032077 * (sine_of(fractionalyear)) - 0.014615 * (cosine_of(2 * fractionalyear)) - 0.040849 * (sine_of(2 * fractionalyear)))
set decl to 0.006918 - 0.399912 * (cosine_of(fractionalyear)) + 0.070257 * (sine_of(fractionalyear)) - 0.006758 * (cosine_of(2 * fractionalyear)) + 9.07E-4 * (sine_of(2 * fractionalyear)) - 0.002697 * (cosine_of(3 * fractionalyear)) + 0.00148 * (sine_of(3 * fractionalyear))
set decl to 180 * decl / pi
set x to cosine_of(90.833) / (cosine_of(lati)) / (cosine_of(decl)) - tan(lati) * (tan(decl))
set ha to arccos(x)
set sunrise_time to round (60 * ((720 - 4 * (longi + ha) - eqtime) + (60 * hoursadjust)))
set sunset_time to round (60 * ((720 - 4 * (longi - ha) - eqtime) + (60 * hoursadjust)))
return {sunrise_time, sunset_time}
end sunrise_sunset