title: Some title
start: 2025-02-08T10:00:00-08:00
[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"
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