zmanim 0.0.7

Hebrew Zmanim library
Documentation
use crate::prelude::tz::TimeZone;
use crate::prelude::Zmanim;
use chrono::prelude::*;

pub mod prelude;

#[must_use]
pub fn get(
    zmanim: &Zmanim,
    latitude: f64,
    longitude: f64,
    date: NaiveDate,
    time_zone: &TimeZone,
) -> Option<DateTime<FixedOffset>> {
    let (sunrise, sunset) =
        sunrise::sunrise_sunset(latitude, longitude, date.year(), date.month(), date.day());
    let naive_sunrise = NaiveDateTime::from_timestamp_opt(sunrise, 0)?;
    let naive_sunset = NaiveDateTime::from_timestamp_opt(sunset, 0)?;
    let fixed_offset_sunrise = time_zone.get_tz(&naive_sunrise);
    let fixed_offset_sunset = time_zone.get_tz(&naive_sunset);
    let sunrise = DateTime::<FixedOffset>::from_utc(naive_sunrise, fixed_offset_sunrise);
    let sunset = DateTime::<FixedOffset>::from_utc(naive_sunset, fixed_offset_sunset);
    Some(match zmanim {
        Zmanim::Sunrise => sunrise,
        Zmanim::Sunset => sunset,
        _ => unreachable!(),
    })
}