1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//! utilities

use time::{OffsetDateTime, UtcOffset};

use crate::Error;

/// Converts a [git2::Time] to [OffsetDateTime]
pub fn convert_git2_time(time: git2::Time) -> Result<OffsetDateTime, Error> {
    let time_secs_unix = time.seconds();
    let mut dt = OffsetDateTime::from_unix_timestamp(time_secs_unix)
        .map_err(|err| Error::msg(err.to_string().as_str()))?;

    let time_tz_mins = time.offset_minutes();
    let offset = UtcOffset::from_whole_seconds(60 * time_tz_mins)
        .map_err(|err| Error::msg(err.to_string().as_str()))?;

    dt = dt.to_offset(offset);
    Ok(dt)
}