HOWTO · Go

Go の期間

GoLang の時間ライブラリは、時間を複数の形式に変換するための多くの機能を提供します。

このページの内容

Go 期間の変換 は複数の方法で実行できます。 time ライブラリと time.duration メソッドは、時間の計算と表示に頻繁に使用されます。

Duration は、定義された 2つの時間オブジェクト間の経過時間を int64 ナノ秒 カウントとして参照することに注意してください。

期間インスタンスの変換

ナノ秒 1
マイクロ秒 1000 * ナノ秒
ミリ秒 1000 * マイクロ秒
2番 1000 * ミリ秒
≪60*秒≫
時間 ≪60分≫

time.duration メソッドを使用する

package main

import (
	"fmt"
	"time"
)

func main() {
	d, err := time.ParseDuration("1h25m10.9183256645s")
	if err != nil {
		panic(err)
	}

	count := []time.Duration{
		time.Nanosecond,
		time.Microsecond,
		time.Millisecond,
		time.Second,
		2 * time.Second,
		time.Minute,
		10 * time.Minute,
		time.Hour,
	}

	for _, r := range count {
		fmt.Printf("(%6s) = %s\n", r, d.Round(r).String())
	}
}

出力:

(   1ns) = 1h25m10.918325664s
(   1µs) = 1h25m10.918326s
(   1ms) = 1h25m10.918s
(    1s) = 1h25m11s
(    2s) = 1h25m10s
(  1m0s) = 1h25m0s
( 10m0s) = 1h30m0s
(1h0m0s) = 1h0m0s

上記のコードにより、それぞれの期間をすべて浮動小数点整数として計算できます。

time ライブラリを使用して経過時間を計算する

package main
import (
    "fmt"
    "time"
)
func main() {

    var t time.Duration = 100000000000000
    fmt.Println(t.Hours())
    fmt.Println(t.Minutes())
    fmt.Println(t.Seconds())

    now := time.Now()
    time.Sleep(100000)
    diff := now.Sub(time.Now())

    fmt.Println("Elapsed time in seconds: ", diff.Seconds())
}

出力:

27.77777777777778
1666.6666666666667
100000
Elapsed time in seconds:  -0.0001

経過時間は、プロセッサが期間を計算するのにかかった時間を示します。

Goで期間を数値に変換する

package main
import (
    "fmt"

    "time"
)
func main() {

timeInput := 3600

data := time.Duration(timeInput) * time.Millisecond

fmt.Println("The time in Nanoseconds:", int64(data/time.Nanosecond))

fmt.Println("The time in Microseconds:", int64(data/time.Microsecond))

fmt.Println("The time in Milliseconds:", int64(data/time.Millisecond))
}

出力:

The time in Nanoseconds: 3600000000
The time in Microseconds: 3600000
The time in Milliseconds: 3600

上記のコードにより、数値を時間インスタンスに変換でき、次に time.Duration が時間変換を実行します。 最終的に、時間インスタンスは数値に変換されます。