osm_io/osm/converters/
mod.rs

1use anyhow::{anyhow, Error};
2use chrono::{DateTime, SecondsFormat};
3
4pub fn timestamp_to_iso8601_seconds(usec: i64) -> Result<String, Error> {
5    let datetime = DateTime::from_timestamp_micros(usec)
6        .ok_or(anyhow!("Invalid timestamp {}", usec))?;
7    Ok(datetime.to_rfc3339_opts(SecondsFormat::Secs, true))
8}
9
10#[cfg(test)]
11mod tests {
12    use crate::osm::converters::timestamp_to_iso8601_seconds;
13
14    #[test]
15    fn test_timestamp_to_iso8601_seconds() {
16        let result = timestamp_to_iso8601_seconds(0).unwrap();
17        assert_eq!(result, "1970-01-01T00:00:00Z");
18    }
19
20    #[test]
21    #[should_panic]
22    fn test_timestamp_to_iso8601_seconds_failure() {
23        timestamp_to_iso8601_seconds(i64::MAX).expect("Invalid input");
24    }
25}