// Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: MPL-2.0 package healthcheck import ( "fmt" "time" ) var ( oneDay = 24 * time.Hour oneWeek = 7 * oneDay oneMonth = 30 * oneDay oneYear = 365 * oneDay ) var suffixDurationMap = map[string]time.Duration{ "y": oneYear, "mo": oneMonth, "w": oneWeek, "d": oneDay, } var orderedSuffixes = []string{"y", "mo", "w", "d"} func FormatDuration(d time.Duration) string { var result string for _, suffix := range orderedSuffixes { unit := suffixDurationMap[suffix] if d > unit { quantity := int64(d / unit) result = fmt.Sprintf("%v%v%v", quantity, suffix, result) d = d - (time.Duration(quantity) * unit) } } if d > 0 { result = d.String() + result } return result }