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

The source code can be found at GitHub and is distributed under the terms of Apache License 2.0.


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.


commons-suncalc is available at Maven Central. Just add this snippet to your pom.xml:


Or use this snippet in your build.gradle (e.g. in Android Studio):

dependencies {

Replace $version with your desired version.

Java Module

Add this line to your module descriptor:

requires org.shredzone.commons.suncalc;

Dependencies and Requirements

commons-suncalc requires at least Java 7, but has no other dependencies. It can also be used on Android (API level 19 or higher).


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.