gsf*_*gsf 3 string formatting time duration go
默认的time.Duration String方法使用添加0s
分钟和添加0m0s
小时来格式化持续时间。有没有功能,我可以使用,将产生5m
替代5m0s
和2h
替代2h0m0s
......或者我要实现我自己?
不在标准库中,但是创建一个库很容易:
func shortDur(d time.Duration) string {
s := d.String()
if strings.HasSuffix(s, "m0s") {
s = s[:len(s)-2]
}
if strings.HasSuffix(s, "h0m") {
s = s[:len(s)-2]
}
return s
}
Run Code Online (Sandbox Code Playgroud)
测试它:
h, m, s := 5*time.Hour, 4*time.Minute, 3*time.Second
ds := []time.Duration{
h + m + s, h + m, h + s, m + s, h, m, s,
}
for _, d := range ds {
fmt.Printf("%-8v %v\n", d, shortDur(d))
}
Run Code Online (Sandbox Code Playgroud)
输出(在Go Playground上尝试):
5h4m3s 5h4m3s
5h4m0s 5h4m
5h0m3s 5h0m3s
4m3s 4m3s
5h0m0s 5h
4m0s 4m
3s 3s
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6746 次 |
最近记录: |