Files
timetrack/src/utils.rs
2025-05-14 15:15:32 +02:00

23 lines
719 B
Rust

use anyhow::Result;
use chrono::{DateTime, Local,Duration, LocalResult, NaiveDateTime, TimeZone};
pub fn str_to_datetime(s: &str) -> Result<DateTime<Local>> {
let no_tz = s.replace("+00:00", "");
let dt = NaiveDateTime::parse_from_str(&no_tz, "%Y-%m-%d %H:%M:%S%.f")?;
Ok(Local.from_utc_datetime(&dt))
}
pub fn time_from_now(dt: &DateTime<Local>) -> Duration {
let now = Local::now();
now - dt
}
pub fn format_duration(d: &Duration) -> String {
let duration_in_seconds = d.num_seconds();
let hours = duration_in_seconds / 60 / 60;
let minutes = (duration_in_seconds % 3600) / 60;
let seconds = duration_in_seconds % 60;
format!("{}:{:0>2}:{:0>2}", hours, minutes, seconds)
}