#sunrise #sunset #times #calculator #calendar #libm #calculating

yanked sunrise-next

Sunrise and sunset calculator

new 1.2.5 Mar 9, 2025
1.2.4 Dec 7, 2024
1.2.3 Jun 24, 2023

#12 in #libm

Download history 501/week @ 2024-11-20 447/week @ 2024-11-27 616/week @ 2024-12-04 520/week @ 2024-12-11 726/week @ 2024-12-18 2232/week @ 2024-12-25 613/week @ 2025-01-01 462/week @ 2025-01-08 336/week @ 2025-01-15 417/week @ 2025-01-22 595/week @ 2025-01-29 295/week @ 2025-02-05 663/week @ 2025-02-12 803/week @ 2025-02-19 726/week @ 2025-02-26 251/week @ 2025-03-05

2,519 downloads per month
Used in opening-hours

MIT license

33KB
438 lines

sunrise

This is a fork of nathan-osman's crate to test new features.

⚠️ This repository is deprecated as all changes have been ported upstream, please use sunrise.

This crate provides a function for calculating sunrise and sunset times using this method.

You can enable the no-std feature if you need it to work in such a context, it will rely on libm instead.

Usage

In order to perform the calculation, you'll need to provide the following:

  • the date for which you wish to calculate the times
  • the latitude and longitude of the location

Begin by adding this crate to Cargo.toml:

[dependencies]
sunrise-next = "1.3"

You can use the sunrise_sunset function to perform the calculation:

// Calculate times for January 1, 2016 in Toronto
let (sunrise, sunset) = sunrise_next::sunrise_sunset(43.6532, -79.3832, 2016, 1, 1);

If you need more refined control, you can use the SolarDay struct:

use sunrise_next::{sunrise_sunset, SolarDay, SolarEvent, DawnType};

let dawn = SolarDay::new(43.6532, -79.3832, 2016, 1, 1)
    .with_altitude(54.)
    .event_time(SolarEvent::Dawn(DawnType::Civil));

Dependencies

~1–1.3MB
~20K SLoC