time.Date()
を使用してtime.Time
を作成しました。私は1970/1/1 00:00:00.000000000
とその時間の間のナノ秒数を計算します。==と比較すると、同じ日付と時刻の2回の構造体がfalseを返すのはなぜですか?
次に、ナノ秒をとり、を使用してtime.Time
に戻します。
ただし、再構成された時刻と元の値を==
と比較すると、falseが返されます。これらの2回を引くと、結果の継続時間は0になります。time.Equal()
を使ってこれらの2回を比較すると、trueを返します。
time.Date()
と同じ値を最初に使用して別の時間を作成する場合は、==
を使用してこの新しい時刻と元の時刻を比較すると、真となります。
これは、実証コードがあり、この(Golang Playground):元の時間と比較した場合、
package main
import (
"fmt"
"time"
)
func main() {
t1 := time.Date(2016, 4, 14, 1, 30, 30, 222000000, time.UTC)
base := time.Date(1970, 1, 1, 0, 0, 0, 0, t1.Location())
nsFrom1970 :=t1.Sub(base).Nanoseconds() // Calculate the number of nanoseconds from 1970/1/1 to t1
t2 := time.Unix(0, nsFrom1970)
fmt.Println(t1)
fmt.Println(t2)
fmt.Println(t1.Sub(t2)) // 0
fmt.Println(t1 == t2) //false
fmt.Println(t1.Equal(t2)) //true
t3 := time.Date(2100, 2, 1, 21, 21, 21, 222000000, time.UTC)
fmt.Println(t1 == t3) //true
}
なぜ再構成時間はfalseを返すのですか?