forgejo/modules/util/sec_to_time.go
René Schaar 609c91665e
Fix display time of milestones (#18753)
* Fix display time of milestones

* Move the SecToTime function

From the models/issue_stopwatch.go file to the modules/util package

* Rename the sec_to_time file

* Updated formatting

* Include copyright notice in sec_to_time.go

* Apply PR review suggestions

- Update copyright notice dates to 2022
- Change `1 day 3h 5min 7s` to `1d 3h 5m 7s`

* Rename hrs var and combine conditions

* Update unit tests to match new time pattern

Changed `1min` to `1m`

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
2022-02-16 00:50:10 +08:00

44 lines
1.1 KiB
Go

// 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
}