email/email/
date.rs

1use chrono::{FixedOffset, TimeZone};
2
3pub fn from_mail_parser_to_chrono_datetime(
4    dt: &mail_parser::DateTime,
5) -> Option<chrono::DateTime<FixedOffset>> {
6    let tz_secs = (dt.tz_hour as i32) * 3600 + (dt.tz_minute as i32) * 60;
7    let tz_sign = if dt.tz_before_gmt { -1 } else { 1 };
8
9    FixedOffset::east_opt(tz_sign * tz_secs)?
10        .with_ymd_and_hms(
11            dt.year as i32,
12            dt.month as u32,
13            dt.day as u32,
14            dt.hour as u32,
15            dt.minute as u32,
16            dt.second as u32,
17        )
18        .earliest()
19}