NOAA astrological algorithms for sunrise and sunset ported to Go
FUNCTIONS:
// CalcSunrise calculates the sunrise, in local time, on the day t at the
// location specified in longitude and latitude.
func CalcSunrise(t time.Time, latitude float64, longitude float64) time.Time
// NextSunrise returns date/time of the next sunrise after tAfter
func NextSunrise(tAfter time.Time, latitude float64, longitude float64) (tSunrise time.Time)
// CalcSunset calculates the sunset, in local time, on the day t at the
// location specified in longitude and latitude.
func CalcSunset(t time.Time, latitude float64, longitude float64) time.Time
// NextSunset returns date/time of the next sunset after tAfter
func NextSunset(tAfter time.Time, latitude float64, longitude float64) (tSunset time.Time)
EXAMPLE:
package main
import (
"astrotime"
"fmt"
"time"
)
const LATITUDE = float64(38.8895)
const LONGITUDE = float64(77.0352)
func main() {
t := astrotime.NextSunrise(time.Now(), LATITUDE, LONGITUDE)
tzname, _ := t.Zone()
fmt.Printf("The next sunrise at the Washington Monument is %d:%02d %s on %d/%d/%d.\n", t.Hour(), t.Minute(), tzname, t.Month(), t.Day(), t.Year())
}