gpt4 book ai didi

go - time since 格式为天、时、分、秒

转载 作者:IT王子 更新时间:2023-10-29 01:48:34 26 4
gpt4 key购买 nike

有没有办法格式化 time.Since() 的输出?在适用时添加天数,例如:

[days]d[hours]h[minutes]m[seconds]s

目前的格式似乎只使用小时作为最大单位:

start := time.Unix(1411691219, 0)
diff := time.Since(start)

21132h9m41.714117301s

但我想用几天而不是几小时,以获得类似的东西:

880d12h9m41.7s

我目前正在使用以下 TimeDiff 函数来生成所需的输出,但想知道是否有实现此目的的简单/更好/ native 方法。

package main

import (
"bytes"
"fmt"
"math"
"time"
)

func main() {
start := time.Unix(1411691219, 0)
diff := time.Since(start)
fmt.Printf("diff = %s\n", diff)
fmt.Printf("diff = %s\n", TimeDiff(start))
}

func TimeDiff(t time.Time) string {
diff := time.Since(t)
days := diff / (24 * time.Hour)
hours := diff % (24 * time.Hour)
minutes := hours % time.Hour
seconds := math.Mod(minutes.Seconds(), 60)
var buffer bytes.Buffer
if days > 0 {
buffer.WriteString(fmt.Sprintf("%dd", days))
}
if hours/time.Hour > 0 {
buffer.WriteString(fmt.Sprintf("%dh", hours/time.Hour))
}
if minutes/time.Minute > 0 {
buffer.WriteString(fmt.Sprintf("%dm", minutes/time.Minute))
}
if seconds > 0 {
buffer.WriteString(fmt.Sprintf("%.1fs", seconds))
}
return buffer.String()
}

最佳答案

一个天真的实现可能是:https://play.golang.org/p/VsVeIhoLGi

(注意天持续时间常数的假设)。

关于go - time since 格式为天、时、分、秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42391869/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com