mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-04 12:10:21 -05:00
Bumps [github.com/gookit/config/v2](https://github.com/gookit/config) from 2.2.3 to 2.2.4. - [Release notes](https://github.com/gookit/config/releases) - [Commits](https://github.com/gookit/config/compare/v2.2.3...v2.2.4) --- updated-dependencies: - dependency-name: github.com/gookit/config/v2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
73 lines
1.5 KiB
Go
73 lines
1.5 KiB
Go
package mathutil
|
|
|
|
import "fmt"
|
|
|
|
// DataSize format bytes number friendly. eg: 1024 => 1KB, 1024*1024 => 1MB
|
|
//
|
|
// Usage:
|
|
//
|
|
// file, err := os.Open(path)
|
|
// fl, err := file.Stat()
|
|
// fmtSize := DataSize(fl.Size())
|
|
func DataSize(size uint64) string {
|
|
switch {
|
|
case size < 1024:
|
|
return fmt.Sprintf("%dB", size)
|
|
case size < 1024*1024:
|
|
return fmt.Sprintf("%.2fK", float64(size)/1024)
|
|
case size < 1024*1024*1024:
|
|
return fmt.Sprintf("%.2fM", float64(size)/1024/1024)
|
|
default:
|
|
return fmt.Sprintf("%.2fG", float64(size)/1024/1024/1024)
|
|
}
|
|
}
|
|
|
|
var timeFormats = [][]int{
|
|
{0},
|
|
{1},
|
|
{2, 1},
|
|
{60},
|
|
{120, 60},
|
|
{3600},
|
|
{7200, 3600},
|
|
{86400},
|
|
{172800, 86400}, // second elem is unit.
|
|
{2592000},
|
|
{2592000 * 2, 2592000},
|
|
}
|
|
|
|
var timeMessages = []string{
|
|
"< 1 sec", "1 sec", "secs", "1 min", "mins", "1 hr", "hrs", "1 day", "days", "1 month", "months",
|
|
}
|
|
|
|
// HowLongAgo format a seconds, get how lang ago. eg: 1 day, 1 week
|
|
func HowLongAgo(sec int64) string {
|
|
intVal := int(sec)
|
|
length := len(timeFormats)
|
|
|
|
for i, item := range timeFormats {
|
|
if intVal >= item[0] {
|
|
ni := i + 1
|
|
match := false
|
|
|
|
if ni < length { // next exists
|
|
next := timeFormats[ni]
|
|
if intVal < next[0] { // current <= intVal < next
|
|
match = true
|
|
}
|
|
} else if ni == length { // current is last
|
|
match = true
|
|
}
|
|
|
|
if match { // match success
|
|
if len(item) == 1 {
|
|
return timeMessages[i]
|
|
}
|
|
return fmt.Sprintf("%d %s", intVal/item[1], timeMessages[i])
|
|
}
|
|
}
|
|
}
|
|
|
|
return "unknown" // He should never happen
|
|
}
|