1use core::fmt;
2use std::path::PathBuf;
3use std::time;
4
5#[derive(Default)]
6pub struct FileAge {
7 pub age_duration: time::Duration,
8 pub seconds: u64,
9 pub hours: u64,
10 pub minutes: u64,
11}
12
13impl fmt::Display for FileAge {
14 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
15 write!(f, "{}h {}m {}s", self.hours, self.minutes, self.seconds)
16 }
17}
18
19pub fn get_age(file: PathBuf) -> FileAge {
20 let metadata = std::fs::metadata(file).unwrap();
21 let t = metadata.modified().unwrap().elapsed().unwrap();
22 let age = t.as_secs();
23 let hours = age / 3600;
24 let minutes = age % 3600 / 60;
25 let seconds = age % 3600 % 60;
26 FileAge {
27 age_duration: t,
28 seconds,
29 hours,
30 minutes,
31 }
32}