Rumah > pembangunan bahagian belakang > Golang > Tukarkan 00:33 kepada tempoh dalam golang

Tukarkan 00:33 kepada tempoh dalam golang

王林
Lepaskan: 2024-02-06 08:24:11
ke hadapan
1014 orang telah melayarinya

将 00:33 转换为 golang 中的持续时间

Kandungan soalan

Saya mempunyai rentetan "12:34" dalam format "mm:ss" dan saya mahu menukarnya kepada masa.duration. Terlalu banyak masa telah terbuang untuk ini. Apa yang saya lakukan salah dalam kod ini:

package main

import (
    "fmt"
    "strings"
    "time"
)

func parseDuration(input string) (time.Duration, error) {
    var layout string
    if strings.Count(input, ":") == 1 {
        layout = "04:05"
    } else {
        layout = "15:04:05"
    }
    t, err := time.Parse(layout, input)
    if err != nil {
        return 0, err
    }
    return t.Sub(time.Time{}), nil
}

func main() {
    input := "00:04"
    duration, err := parseDuration(input)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(int(duration.Seconds())) // I should get 4 but I get -31622396

}
Salin selepas log masuk

https://go.dev/play/p/a-ehc-eptrd


Jawapan betul


Nilai sifar masa jenis ialah 1 Januari, 1 tahun 00:00:00.000000000 utc.

func parseduration(input string) (time.duration, error) {
    var layout string
    if strings.count(input, ":") == 1 {
        layout = "04:05"
    } else {
        layout = "15:04:05"
    }
    t, err := time.parse(layout, input)
    if err != nil {
        return 0, err
    }
    return t
}

fmt.println(time.time{})
// this prints 0001-01-01 00:00:00 +0000 utc
fmt.println(parseduration("00:04"))
// this prints 0000-01-01 00:00:04 +0000 utc
Salin selepas log masuk

Dalam kes anda, anda harus mentakrifkan start 对象,而不是直接使用 time.time{} . Contohnya,

package main

import (
    "fmt"
    "strings"
    "time"
)

var origin = time.Date(0, 1, 1, 0, 0, 0, 0, time.UTC)

func parseDuration(input string) (time.Duration, error) {
    var layout string
    if strings.Count(input, ":") == 1 {
        layout = "04:05"
    } else {
        layout = "15:04:05"
    }
    t, err := time.Parse(layout, input)
    if err != nil {
        return 0, err
    }
    return t.Sub(origin), nil
}

func main() {
    input := "00:04"
    duration, err := parseDuration(input)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(duration.String()) // this prints 4s

}

Salin selepas log masuk

https://www.php.cn/link/bdf0f5f84843f08f00912ae5292162f6

Atas ialah kandungan terperinci Tukarkan 00:33 kepada tempoh dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan