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 }
}