evidentsource-client 1.0.0-rc1

Rust client for the EvidentSource event sourcing platform
Documentation
//! Timestamp conversion utilities.

use chrono::{DateTime, Utc};
use prost_types::Timestamp;

use super::error::ConversionError;

/// Convert a prost Timestamp to a chrono DateTime<Utc>.
pub fn timestamp_to_datetime(ts: Timestamp) -> Result<DateTime<Utc>, ConversionError> {
    DateTime::from_timestamp(ts.seconds, ts.nanos as u32).ok_or(ConversionError::InvalidTimestamp)
}

/// Convert a chrono DateTime<Utc> to a prost Timestamp.
pub fn datetime_to_timestamp(dt: DateTime<Utc>) -> Timestamp {
    Timestamp {
        seconds: dt.timestamp(),
        nanos: dt.timestamp_subsec_nanos() as i32,
    }
}