Skip to content

Go SDK

Install

go get github.com/koke1997/timenow/sdk/go

Quick Start

package main

import (
    "fmt"
    "log"
    timenow "github.com/koke1997/timenow/sdk/go"
)

func main() {
    client := timenow.NewClient("http://localhost:8090")

    // Solar time for London
    result, err := client.GetSolarTime(51.5074, -0.1278, "")
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(result.SolarTime)           // "2026-04-14T11:49:23"
    fmt.Println(result.CivilSolarOffsetMin) // -10.6

    // Social jetlag
    jetlag, err := client.GetJetlag(39.47, 75.99)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(jetlag.RiskLevel) // "severe"
}

Methods

Method Signature Returns API endpoint
GetSolarTime (lat, lng float64, utc string) *SolarTimeResult, error GET /solar
GetJetlag (lat, lng float64) *JetlagResult, error GET /solar/jetlag
GetPrayerTimes (lat, lng float64, date, convention string) *PrayerTimesResult, error GET /solar/prayer
GetAlmanac (lat, lng float64, year int) *AlmanacResult, error GET /solar/almanac
GetIcal (lat, lng float64, days int) string, error GET /solar/ical
Health () bool, error GET /health

Types

type SolarTimeResult struct {
    Latitude             float64 `json:"latitude"`
    Longitude            float64 `json:"longitude"`
    UTC                  string  `json:"utc"`
    SolarTime            string  `json:"solar_time"`
    CivilTime            string  `json:"civil_time"`
    EquationOfTimeMin    float64 `json:"equation_of_time_min"`
    CivilSolarOffsetMin  float64 `json:"civil_solar_offset_min"`
    Timezone             string  `json:"timezone"`
    SolarNoonUTC         string  `json:"solar_noon_utc"`
    SunriseUTC           string  `json:"sunrise_utc"`
    SunsetUTC            string  `json:"sunset_utc"`
}