diff options
author | 2023-11-08 18:46:15 +1300 | |
---|---|---|
committer | 2023-11-08 14:19:30 +0100 | |
commit | 2bc5ad53c2f0f2ff3372b2aeedf5955d40969af0 (patch) | |
tree | 0b73bc3d647799cc1a1648d83fd3d95be5bee999 /internal/template/functions.go | |
parent | bc317cfcd1b17bad5273cf01f44853dc9eb9b262 (diff) | |
download | v2-2bc5ad53c2f0f2ff3372b2aeedf5955d40969af0.tar.gz v2-2bc5ad53c2f0f2ff3372b2aeedf5955d40969af0.tar.zst v2-2bc5ad53c2f0f2ff3372b2aeedf5955d40969af0.zip |
Avoid long duration strings: round to nearest second
For example, seeing "Next check: 14m56.245483933s" in feeds list after force-refreshing a feed.
This rounds to the nearest second, so it'll instead be "14m56s"
Other examples from latter two test cases:
- "12.345678s" -> "12s"
- "1m27.654321s" -> "1m28s"
Diffstat (limited to 'internal/template/functions.go')
-rw-r--r-- | internal/template/functions.go | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/internal/template/functions.go b/internal/template/functions.go index f617029c..ef3ffd37 100644 --- a/internal/template/functions.go +++ b/internal/template/functions.go @@ -163,17 +163,23 @@ func isEmail(str string) bool { // Returns the duration in human readable format (hours and minutes). func duration(t time.Time) string { + return durationImpl(t, time.Now()) +} + +// Accepts now argument for easy testing +func durationImpl(t time.Time, now time.Time) string { if t.IsZero() { return "" } - diff := time.Until(t) + diff := t.Sub(now) if diff < 0 { return "" } - return diff.String() + // Round to nearest second to get e.g. "14m56s" rather than "14m56.245483933s" + return diff.Round(time.Second).String() } func elapsedTime(printer *locale.Printer, tz string, t time.Time) string { |