use chrono::{Datelike, NaiveDate};
use crate::{Error, NepaliDate};
#[cfg_attr(docsrs, doc(cfg(feature = "chrono")))]
impl From<NepaliDate> for NaiveDate {
fn from(date: NepaliDate) -> Self {
let ad = date.to_gregorian();
NaiveDate::from_ymd_opt(ad.year(), u32::from(ad.month()), u32::from(ad.day()))
.unwrap_or(NaiveDate::MIN)
}
}
#[cfg_attr(docsrs, doc(cfg(feature = "chrono")))]
impl TryFrom<NaiveDate> for NepaliDate {
type Error = Error;
fn try_from(date: NaiveDate) -> Result<Self, Error> {
let month = u8::try_from(date.month()).map_err(|_| Error::InvalidGregorian)?;
let day = u8::try_from(date.day()).map_err(|_| Error::InvalidGregorian)?;
NepaliDate::from_gregorian(date.year(), month, day)
}
}