INNER CODE UNIT · Rust

timestamp_to_datetime_utc

upvpn/upvpn-app · upvpn-controller/src/lib.rs:134

pub fn timestamp_to_datetime_utc(timestamp: Option<Timestamp>) -> Result<DateTimeUtc, String> {
    let timestamp = timestamp.ok_or(format!("no timestamp"))?;
    let date_time_utc = match Utc.timestamp_opt(timestamp.seconds, timestamp.nanos as u32) {
        chrono::LocalResult::Single(dtu) => dtu,
        chrono::LocalResult::None => Err("invalid utc time none")?,
        chrono::LocalResult::Ambiguous(a, _b) => {
            //Err(format!("ambiguous utc time {a} {b}"))?
            a
        }
    };
    Ok(date_time_utc)
}

pub fn datetime_utc_to_timestamp(datetime_utc: DateTimeUtc) -> Timestamp {
    let seconds = datetime_utc.timestamp();
    let nanos = std::cmp::max(datetime_utc.timestamp_subsec_nanos() as i32, 0);
    prost_types::Timestamp { seconds, nanos }
}

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…