A Java library for calculation of sun and moon positions and phases.
This is a compatibility branch for Java 1.7 and for Android from API level 11 (Honeycomb) thru API level 25 (Nougat 7.1).
If you are using Java 8, Android API level 26 (Oreo), or higher versions, you should use commons-suncalc v3 instead!
- 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.
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.