Rich Enhanced Shell History - Contextual shell history for zsh and bash
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
resh/internal/searchapp/time.go

181 lines
3.4 KiB

package searchapp
import (
"strconv"
"time"
)
func formatTimeRelativeLongest(tm time.Time) string {
tmSince := time.Since(tm)
hrs := tmSince.Hours()
yrs := int(hrs / (365 * 24))
if yrs > 0 {
if yrs == 1 {
return "1 year ago"
}
return strconv.Itoa(yrs) + " years ago"
}
months := int(hrs / (30 * 24))
if months > 0 {
if months == 1 {
return "1 month ago"
}
return strconv.Itoa(months) + " months ago"
}
days := int(hrs / 24)
if days > 0 {
if days == 1 {
return "1 day ago"
}
return strconv.Itoa(days) + " days ago"
}
hrsInt := int(hrs)
if hrsInt > 0 {
if hrsInt == 1 {
return "1 hour ago"
}
return strconv.Itoa(hrsInt) + " hours ago"
}
mins := int(hrs*60) % 60
if mins > 0 {
if mins == 1 {
return "1 min ago"
}
return strconv.Itoa(mins) + " mins ago"
}
secs := int(hrs*60*60) % 60
if secs > 0 {
if secs == 1 {
return "1 sec ago"
}
return strconv.Itoa(secs) + " secs ago"
}
return "now"
}
func formatTimeRelativeLong(tm time.Time) string {
tmSince := time.Since(tm)
hrs := tmSince.Hours()
yrs := int(hrs / (365 * 24))
if yrs > 0 {
if yrs == 1 {
return "1 year"
}
return strconv.Itoa(yrs) + " years"
}
months := int(hrs / (30 * 24))
if months > 0 {
if months == 1 {
return "1 month"
}
return strconv.Itoa(months) + " months"
}
days := int(hrs / 24)
if days > 0 {
if days == 1 {
return "1 day"
}
return strconv.Itoa(days) + " days"
}
hrsInt := int(hrs)
if hrsInt > 0 {
if hrsInt == 1 {
return "1 hour"
}
return strconv.Itoa(hrsInt) + " hours"
}
mins := int(hrs*60) % 60
if mins > 0 {
if mins == 1 {
return "1 min"
}
return strconv.Itoa(mins) + " mins"
}
secs := int(hrs*60*60) % 60
if secs > 0 {
if secs == 1 {
return "1 sec"
}
return strconv.Itoa(secs) + " secs"
}
return "now"
}
func formatTimeMixedLongest(tm time.Time) string {
tmSince := time.Since(tm)
hrs := tmSince.Hours()
yrs := int(hrs / (365 * 24))
if yrs > 0 {
if yrs == 1 {
return "1 year ago"
}
return strconv.Itoa(yrs) + " years ago"
}
months := int(hrs / (30 * 24))
if months > 0 {
if months == 1 {
return "1 month ago"
}
return strconv.Itoa(months) + " months ago"
}
days := int(hrs / 24)
if days > 0 {
if days == 1 {
return "1 day ago"
}
return strconv.Itoa(days) + " days ago"
}
hrsInt := int(hrs)
mins := int(hrs*60) % 60
return strconv.Itoa(hrsInt) + ":" + strconv.Itoa(mins)
}
func formatTimeRelativeShort(tm time.Time) string {
tmSince := time.Since(tm)
hrs := tmSince.Hours()
yrs := int(hrs / (365 * 24))
if yrs > 0 {
return strconv.Itoa(yrs) + " Y"
}
months := int(hrs / (30 * 24))
if months > 0 {
return strconv.Itoa(months) + " M"
}
days := int(hrs / 24)
if days > 0 {
return strconv.Itoa(days) + " D"
}
hrsInt := int(hrs)
if hrsInt > 0 {
return strconv.Itoa(hrsInt) + " h"
}
mins := int(hrs*60) % 60
if mins > 0 {
return strconv.Itoa(mins) + " m"
}
secs := int(hrs*60*60) % 60
if secs > 0 {
return strconv.Itoa(secs) + " s"
}
return "now"
}
func formatTimeMixedShort(tm time.Time) string {
tmSince := time.Since(tm)
hrs := tmSince.Hours()
yrs := int(hrs / (365 * 24))
if yrs > 0 {
return strconv.Itoa(yrs) + " Y"
}
months := int(hrs / (30 * 24))
if months > 0 {
return strconv.Itoa(months) + " M"
}
days := int(hrs / 24)
if days > 0 {
return strconv.Itoa(days) + " D"
}
hrsInt := int(hrs)
mins := int(hrs*60) % 60
return strconv.Itoa(hrsInt) + ":" + strconv.Itoa(mins)
}