Calculation of sunrise and sunset
From WickyWiki
Source:
- https://www.esrl.noaa.gov/gmd/grad/solcalc/
- https://www.esrl.noaa.gov/gmd/grad/solcalc/solareqns.PDF
Input example
- Europe/Amsterdam UTC -> UTC+1
- Date DST -> vTimezone=+1 or +2
- Date --> vDayOfYear, vLeapyear
Fractional year (radians)
vY = 2 * PI() / (365 + vLeapYear) * (vDayOfYear - 1 )
Equation of time (minutes)
vEqtime = 229.18 * (0.000075 + 0.001868 * COS( vY ) - 0.032077 * SIN( vY ) - 0.014615 * COS(2 * vY ) - 0.040849 * SIN(2 * vY )
Solar declination angle (radians).
vDecl = 0.006918 - 0.399912 * COS(vY) + 0.070257 * SIN(vY) - 0.006758 * COS(2 * vY) + 0.000907 * SIN(2 * vY) - 0.002697 * COS(3 * vY) + 0.00148 * SIN (3 * vY)
For sunrise or sunset, the zenith is set to 90.833 degrees (the approximate correction for atmospheric refraction at sunrise and sunset, and the size of the solar disk). Hours angle:
vHa = ACOS( COS( RADIANS(90.833) ) / COS(vLat) * COS(vDecl) - TAN(vLat) * TAN(vDecl) )
Sunrise UTC minutes
vUtcMinsSunrise = 360 * 2 - 4 * (vLon + vHa) - vEqtime
Noon UTC minutes
vUtcMinsNoon = 360 * 2 - 4 * vLon - vEqtime
Sunset UTC minutes
vUtcMinsSunset = 360 * 2 - 4 * (vLon - vHa) - vEqtime
Sunrise local time (fractional day)
(vUtcMinsSunrise / 60 + vTimezone) / 24