diff options
Diffstat (limited to 'modules/util/sec_to_time.go')
-rw-r--r-- | modules/util/sec_to_time.go | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/modules/util/sec_to_time.go b/modules/util/sec_to_time.go new file mode 100644 index 0000000000..657b30cddf --- /dev/null +++ b/modules/util/sec_to_time.go @@ -0,0 +1,44 @@ +// Copyright 2022 Gitea. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package util + +import "fmt" + +// SecToTime converts an amount of seconds to a human-readable string (example: 66s -> 1min 6s) +func SecToTime(duration int64) string { + seconds := duration % 60 + minutes := (duration / (60)) % 60 + hours := duration / (60 * 60) % 24 + days := duration / (60 * 60) / 24 + + var formattedTime string + + if days > 0 { + formattedTime = fmt.Sprintf("%dd", days) + } + if hours > 0 { + if formattedTime == "" { + formattedTime = fmt.Sprintf("%dh", hours) + } else { + formattedTime = fmt.Sprintf("%s %dh", formattedTime, hours) + } + } + if minutes > 0 { + if formattedTime == "" { + formattedTime = fmt.Sprintf("%dm", minutes) + } else { + formattedTime = fmt.Sprintf("%s %dm", formattedTime, minutes) + } + } + if seconds > 0 { + if formattedTime == "" { + formattedTime = fmt.Sprintf("%ds", seconds) + } else { + formattedTime = fmt.Sprintf("%s %ds", formattedTime, seconds) + } + } + + return formattedTime +} |