systemprompt_models/
time_format.rs1use chrono::{DateTime, Utc};
2
3pub fn format_timestamp(dt: DateTime<Utc>) -> String {
4 dt.format("%Y-%m-%d %H:%M:%S").to_string()
5}
6
7pub fn format_date(dt: DateTime<Utc>) -> String {
8 dt.format("%Y-%m-%d").to_string()
9}
10
11pub fn format_date_range(start: DateTime<Utc>, end: DateTime<Utc>) -> String {
12 format!("{} to {}", format_date(start), format_date(end))
13}
14
15pub fn format_duration_ms(ms: i64) -> String {
16 match ms {
17 ms if ms < 1000 => format!("{}ms", ms),
18 ms if ms < 60_000 => format!("{:.1}s", ms as f64 / 1000.0),
19 ms if ms < 3_600_000 => format!("{:.1}m", ms as f64 / 60_000.0),
20 _ => format!("{:.1}h", ms as f64 / 3_600_000.0),
21 }
22}
23
24pub fn format_optional_duration_ms(ms: Option<i64>) -> String {
25 ms.map_or_else(String::new, |d| format!(" ({}ms)", d))
26}
27
28pub fn format_period_label(dt: DateTime<Utc>, period: &str) -> String {
29 match period {
30 "hour" => dt.format("%Y-%m-%d %H:00").to_string(),
31 "day" => format_date(dt),
32 "week" => format!("Week of {}", format_date(dt)),
33 "month" => dt.format("%Y-%m").to_string(),
34 _ => format_timestamp(dt),
35 }
36}