package virtbuf import ( "fmt" "time" ) func FormatDuration(d time.Duration) string { result := "" // check if it's more than a year years := int(d.Hours()) / (24 * 365) if years > 0 { result += fmt.Sprintf("%dy ", years) return result } // check if it's more than a day days := int(d.Hours()) / 24 if days > 0 { result += fmt.Sprintf("%dd ", days) return result } // check if it's more than an hour hours := int(d.Hours()) % 24 if hours > 0 { result += fmt.Sprintf("%dh ", hours) return result } // check if it's more than a minute minutes := int(d.Minutes()) % 60 if minutes > 0 { result += fmt.Sprintf("%dm ", minutes) return result } // check if it's more than a second seconds := int(d.Seconds()) % 60 if seconds > 0 { result += fmt.Sprintf("%ds", seconds) return result } // report in milliseconds ms := int(d.Milliseconds()) if ms > 100 { // todo: print .3s, etc ? return fmt.Sprintf("%1.2fs", seconds/1000) } result += fmt.Sprintf("%dms", ms) return result } func GetDurationStamp(t time.Time) string { // Get the current time currentTime := time.Now() // Calculate the duration between t current time duration := currentTime.Sub(t) return FormatDuration(duration) }