Skip to content
Calculate sun and moon times in Java
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.
src Migrate to SpotBugs annotations May 24, 2020

commons-suncalc build status maven central

A Java library for calculation of sun and moon positions and phases.


  • Lightweight, only requires Java 1.7 or higher, no other dependencies
  • Android compatible, requires API level 11 (Honeycomb) or higher. Lower API levels may work as well, but this is untested.
  • Available at Maven Central
  • Extensive unit tests


Astronomical calculations are far more complex than throwing a few numbers into an obscure formula and then getting a fully accurate result. There is always a tradeoff between accuracy and computing time.

This library has its focus on getting acceptable results at low cost, so it can also run on mobile devices, or devices with a low computing power. The results have an accuracy of about a minute, which should be good enough for common applications (like sunrise/sunset timers), but is probably not sufficient for astronomical purposes.

If you are looking for the highest possible accuracy, you are looking for a different library.

Quick Start

This library consists of a few models, all of them are invoked the same way:

Date date = // requested date of calculation
double lat, lng = // geolocation
SunPosition position = SunPosition.compute()
        .on(date)       // set a date
        .at(lat, lng)   // set a location
        .execute();     // get the results
System.out.println("Elevation: " + position.getElevation() + "°");
System.out.println("Azimuth: " + position.getAzimuth() + "°");

See the online documentation for examples and API details.

See the migration guide for how to migrate from a previous version.


This library bases on:

  • "Astronomy on the Personal Computer", 4th edition, by Oliver Montenbruck and Thomas Pfleger
  • "Astronomical Algorithms" by Jean Meeus


  • Fork the Source code at GitHub. Feel free to send pull requests.
  • Found a bug? File a bug report.
  • Are you getting different results from another library or web site? If you file a bug, please try to explain why you think the commons-suncalc result is wrong.


commons-suncalc is open source software. The source code is distributed under the terms of Apache License 2.0.

You can’t perform that action at this time.