解析hh:mm:来自Go的秒表的时间?

Mic*_*son 0 time go

我在日志文件中有一系列类似秒表的时间戳,格式为hh:mm:ss,例如"00:03:30".我如何在Golang中解析这些时间戳,以便找到两个时间间隔之间的差异?

例如,替换00:03:3000:03:00应该返回00:00:3030.

Eug*_*sky 6

您可以从另一个时间减去一次.

package main

import (
    "fmt"
    "time"
)

func main() {

    t1, err := time.Parse("15:04:05", "03:00:30")
    t2, err := time.Parse("15:04:05", "03:00:00")

    fmt.Println(err, t1.Sub(t2), t1.Sub(t2).Seconds())
}
Run Code Online (Sandbox Code Playgroud)

工作示例 - https://play.golang.org/p/VegXLBvfnM

更新:如何应对持续时间24:00:00?这样他们就可以手动解析:

func Parse(st string) (int, error) {
    var h, m, s int
    n, err := fmt.Sscanf(st, "%d:%d:%d", &h, &m, &s)
    fmt.Print(n, err)
    if err != nil || n != 3 {
        return 0, err  
    }
    return h*3600 + m*60 + s, nil
}
Run Code Online (Sandbox Code Playgroud)

https://play.golang.org/p/HHSRHzaGqT