Rust Chrono Relative Time Ago
A quick and dirty solution to get that "X days ago" String out of a chrono NaiveDateTime without any dependencies. Very easy to customize on-demand in your project!
use chrono::{NaiveDateTime, Utc};
pub fn time_ago(date: NaiveDateTime) -> String {
let now = Utc::now().naive_utc();
let duration = now.signed_duration_since(date);
match duration.num_days() {
0 => "today".to_string(),
1 => "yesterday".to_string(),
2..=6 => format!("{} days ago", duration.num_days()),
7..=13 => "1 week ago".to_string(),
14..=20 => "2 weeks ago".to_string(),
21..=27 => "3 weeks ago".to_string(),
28..=30 => "1 month ago".to_string(),
31..=59 => format!("{} months ago", duration.num_days() / 30),
60..=364 => format!("{} months ago", duration.num_days() / 30),
365..=729 => "1 year ago".to_string(),
_ => format!("{} years ago", duration.num_days() / 365),
}
}
Linked Technologies
What it's made of
![illustration of Rust](/uploads/grimoire_technologies/11.thumbnail.webp)
Rust
A language empowering everyone to build reliable and efficient software. Futuristic swiss army knife and probably the most powerful mainstream technology today
Linked Categories
Where it's useful
![illustration of Frontend Development](/uploads/grimoire_categories/5.thumbnail.webp)
Frontend Development
Explore the latest tools and techniques for crafting responsive designs, enhancing user interfaces, and optimizing web performance.