ai/utils/time.rs
1use serde::Deserialize;
2use time::OffsetDateTime;
3
4pub fn deserialize_iso8601_timestamp_to_unix_timestamp<'de, D>(
5 deserializer: D,
6) -> Result<u64, D::Error>
7where
8 D: serde::Deserializer<'de>,
9{
10 let iso8601_str = String::deserialize(deserializer)?;
11
12 // Parse ISO8601 string to OffsetDateTime
13 let datetime = OffsetDateTime::parse(
14 &iso8601_str,
15 &time::format_description::well_known::Iso8601::DEFAULT,
16 )
17 .map_err(serde::de::Error::custom)?;
18
19 // Convert to Unix timestamp
20 Ok(datetime.unix_timestamp() as u64)
21}