Go time.Duration 的代码使用案例

49 min read

以下是使用Go中的time.Duration代码的一些示例:

  1. 时间间隔转换为字符串
import "time"

func DurationToString(d time.Duration) string {
    return d.String()
}

// 示例
d := time.Second * 10
fmt.Println(DurationToString(d)) // Output: 10s
  1. 字符串转换为时间间隔
import "time"

func StringToDuration(s string) (time.Duration, error) {
    return time.ParseDuration(s)
}

// 示例
s := "1h"
d, err := StringToDuration(s)
if err != nil {
    // 错误处理
}
fmt.Println(d) // Output: 1h0m0s
  1. 根据时间间隔获取Unix时间戳
import "time"

func GetUnixTime(d time.Duration) int64 {
    return time.Now().UTC().Add(d).Unix()
}

// 示例
d := time.Minute * 5
t := GetUnixTime(d)
fmt.Println(t) // Output: Unix timestamp after 5 minutes from now
  1. 获取距离现在的时间间隔
import "time"

func TimeUntil(t time.Time) time.Duration {
    return time.Until(t)
}

// 示例
t := time.Now().Add(time.Hour)
d := TimeUntil(t)
fmt.Println(d) // Output: Duration until 1 hour from now
  1. 获取两个时间之间的时间间隔
import "time"

func TimeDiff(t1, t2 time.Time) time.Duration {
    return t1.Sub(t2)
}

// 示例
t1 := time.Now()
t2 := time.Now().Add(-time.Minute * 10)
d := TimeDiff(t1, t2)
fmt.Println(d) // Output: Difference between t1 and t2