Deserialize date in YAML
examples/yaml/load-datetime-field/data.yaml
title: Some title start: 2025-02-08T10:00:00-08:00
examples/yaml/load-datetime-field/Cargo.toml
[package] name = "load-datetime-field" version = "0.1.0" edition = "2021" [dependencies] chrono = { version = "0.4.39", features = ["serde"] } serde = { version = "1.0.217", features = ["derive"] } serde_yml = "0.0.12"
examples/yaml/load-datetime-field/src/main.rs
use chrono::{DateTime, Timelike, Utc}; use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize, Debug)] struct Event1 { title: String, start: String, } #[derive(Serialize, Deserialize, Debug)] struct Event2 { title: String, start: DateTime<Utc>, } fn main() { let filename = "data.yaml"; let content = std::fs::read_to_string(filename).expect("File not found"); let data: Event1 = serde_yml::from_str(&content).expect("YAML parsing error"); println!("{:?}", data); let data: Event2 = serde_yml::from_str(&content).expect("YAML parsing error"); println!("{:?}", data); println!("hour: {}", data.start.hour()); println!("timezone: {}", data.start.timezone()); }
Event1 { title: "Some title", start: "2025-02-08T10:00:00-08:00" } Event2 { title: "Some title", start: 2025-02-08T18:00:00Z } hour: 18 timezone: UTC