Skip to main content

Sun & Moon Commands

Solar and lunar position calculations.

Sun Commands

starward sun position

Current solar position.

starward sun position
starward sun position --jd 2451545.0 # At J2000.0

starward sun rise / starward sun set

Sunrise and sunset times.

starward sun rise --lat 40.7 --lon -74.0
starward sun set --observer home

starward sun twilight

Twilight times (civil, nautical, astronomical).

starward sun twilight --lat 51.5 --lon -0.1

starward sun altitude

Current solar altitude.

starward sun altitude --lat 40.7 --lon -74.0

Moon Commands

starward moon position

Current lunar position.

starward moon position

starward moon phase

Current lunar phase.

starward moon phase

Output includes phase name, illumination percentage, and age in days.

starward moon rise / starward moon set

Moonrise and moonset times.

starward moon rise --lat 40.7 --lon -74.0

starward moon next

Find the next occurrence of a phase.

starward moon next full
starward moon next new

Examples

# Solar noon at Greenwich
starward sun noon --lat 51.4769 --lon -0.0005

# Day length in summer vs winter
starward sun rise --lat 60 --lon 0 --jd 2460479.5 # June
starward sun rise --lat 60 --lon 0 --jd 2460296.5 # December

# Moon phase with verbose calculation
starward moon phase --verbose

# JSON output for scripting
starward sun position --json | jq '.ra_hours'

Python API

from starward.core.sun import sun_position, sunrise, sunset
from starward.core.moon import moon_position, moon_phase
from starward.core.observer import Observer

# Sun position
sun = sun_position()
print(f"Sun RA: {sun.ra.format_hms()}")
print(f"Equation of time: {sun.equation_of_time:.1f} min")

# Sunrise at a location
observer = Observer.from_degrees("NYC", 40.7, -74.0)
rise = sunrise(observer)
print(f"Sunrise: {rise.to_datetime()}")

# Moon phase
phase = moon_phase()
print(f"Phase: {phase.phase_name.value}")
print(f"Illumination: {phase.percent_illuminated:.1f}%")