sunkit-swift/sunkit
**SunKit** is a Swift package that uses math and trigonometry to compute several pieces of information about the Sun.
Attribution
SunKit is licensed under the Apache License 2.0. For attribution, we request that you include an unmodified vector of SunKit's logo, available here, along with our organization name "Sunlitt", both at legible sizes, and that they link back to our website.
If you are developing an app for Apple platforms, we additionally request that you include SunKit's license and copyright in the "Acknowledgments" section of your app's Settings.bundle file. We have included a Settings.bundle example here for you to download and import as is in your Xcode project.
Attribution is essential to make sure that our hard work is properly recognized and we thank you for complying with our requests.
Usage
CoreLocation framework is required for SunKit to work. SunKit only needs a location and the relative time zone. Everything is computed locally, no internet connection is needed.
Creating a Sun
// Creating a CLLocation object with the coordinates you are interested in
let naplesLocation: CLLocation = .init(latitude: 40.84014, longitude: 14.25226)
// Timezone for the location of interest. It's highly recommended to initialize it via identifier
let timeZoneNaples: Timezone = .init(identifier: "Europe/Rome") ?? .current
// Creating the Sun instance which will store all the information you need about sun events and his position
var mySun: Sun = .init(location: naplesLocation, timeZone: timeZoneNaples)
Retrieve information
// Creating a Date instance
let myDate: Date = Date() // Your current date
// Setting inside mySun object the date of interest
mySun.setDate(myDate)
// All the following informations are related to the given location for the date that has just been set
// Azimuth of the Sun
mySun.azimuth.degrees
// Altitude of the Sun
mySun.altitude.degrees
// Sunrise Date
mySun.sunrise
// Sunset Date
mySun.sunset
// Evening Golden Hour Start Date
mySun.eveningGoldenHourStart
// Evening Golden Hour End Date
mySun.eveningGoldenHourEnd
// To know all the information you can retrieve go to the **Features** section.
### Working with Timezones and Dates To properly show the Sun Date Events use the following DateFormatter.
//Creting a DateFormatter
let dateFormatter = DateFormatter()
//Properly setting his attributes
dateFormatter.locale = .current
dateFormatter.timeZone = timeZoneNaples // It shall be the same as the one used to initilize mySun
dateFormatter.timeStyle = .full
dateFormatter.dateStyle = .full
//Printing Sun Date Events with the correct Timezone
print("Sunrise: \(dateFormatter.string(from: mySun.sunrise))")
Features
- Sun Azimuth
Sun Altitude Civil Dusk Time Civil Dawn Time Sunrise Time Solar Noon Time Solar Midnight Time Morning Golden Hour Time Evening Golden Hour Time Sunset Time Astronomical Dusk Astronomical Dawn Nautical Dusk Nautical Dawn Morning Blue Hour Time Evening Blue Hour Time Sun Azimuth at Sunrise Sun Azimuth at Sunset Sun Azimuth at Solar Noon Total Daylight Duration Total Night Duration March Equinox June Solstice September Equinox December Solstice
References
MoonKit 🌙
Take a look at SunKit's spiritual brother, MoonKit.
Special thanks
- Davide Biancardi: Creator of SunKit.
Package Metadata
Repository: sunkit-swift/sunkit
Default branch: main
README: README.md