我有一个time.Time使用time.Date(). 然后我计算1970/1/1 00:00:00.000000000与那个时间之间的纳秒数。
然后我用纳秒把它们变成time.Timeusing time.Unix()。
但是,如果我将重构时间与原始时间进行比较==,则返回 false。如果我减去这 2 次,则结果持续时间为 0。如果我使用 比较这 2 次time.Equal(),则返回 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?
慕容森
相关分类