diff --git a/renderer/renderer.go b/renderer/renderer.go index 7d488de..f2c5274 100644 --- a/renderer/renderer.go +++ b/renderer/renderer.go @@ -70,45 +70,53 @@ func displayInteractionCount(c int64) string { return "" } -func DurToStr(dur time.Duration) string { +func DurToStr(dur time.Duration, isAgo bool) string { + ret := "" + s := dur.Seconds() - if s < 60 { - return strconv.Itoa(int(s)) + "s" - } m := dur.Minutes() - if m < 60*2 { - return strconv.Itoa(int(m)) + "m" - } h := dur.Hours() - if h < 24*2 { - return strconv.Itoa(int(h)) + "h" - } d := h / 24 - if d < 30*2 { - return strconv.Itoa(int(d)) + "d" - } mo := d / 30 - if mo < 12*2 { - return strconv.Itoa(int(mo)) + "mo" - } y := mo / 12 - return strconv.Itoa(int(y)) + "y" + + if s < 60 { + ret = strconv.Itoa(int(s)) + "s" + } else if m < 60*2 { + ret = strconv.Itoa(int(m)) + "m" + } else if h < 24*2 { + ret = strconv.Itoa(int(h)) + "h" + } else if d < 30*2 { + ret = strconv.Itoa(int(d)) + "d" + } else if mo < 12*2 { + ret = strconv.Itoa(int(mo)) + "mo" + } else { + ret = strconv.Itoa(int(y)) + "y" + } + + if isAgo { + ret += " ago" + } else { + ret += " from now" + } + + return ret } func timeSince(t time.Time) string { d := time.Since(t) if d < 0 { - d = 0 + return timeUntil(t) } - return DurToStr(d) + return DurToStr(d, true) } func timeUntil(t time.Time) string { d := time.Until(t) if d < 0 { - d = 0 + return timeSince(t) } - return DurToStr(d) + return DurToStr(d, false) } func formatTimeRFC3339(t time.Time) string {