#![doc = include_str!("../README.md")]
#![no_std]
#[cfg(feature = "std")]
extern crate std;
#[cfg(not(any(feature = "std", feature = "libm")))]
compile_error!("either the `std` or `libm` feature is required");
mod coordinates;
mod event;
mod julian;
mod math;
mod solar_equation;
use chrono::NaiveDate;
pub use crate::coordinates::Coordinates;
pub use crate::event::{DawnType, SolarEvent};
pub use crate::solar_equation::SolarDay;
#[deprecated(
since = "1.1.0",
note = "Use `SolarEvent` which is panic-free, more flexible and explicit."
)]
pub fn sunrise_sunset(
latitude: f64,
longitude: f64,
year: i32,
month: u32,
day: u32,
) -> (i64, i64) {
let solar_day = SolarDay::new(
Coordinates::new(latitude, longitude).expect("invalid coordinates"),
NaiveDate::from_ymd_opt(year, month, day).expect("invalid date"),
);
(
solar_day
.event_time(SolarEvent::Sunrise)
.expect("no sunrise")
.timestamp(),
solar_day
.event_time(SolarEvent::Sunset)
.expect("no sunset")
.timestamp(),
)
}