为什么这两个time.Time实例对于UTC而言是相同的,而对于另一个位置却不同?

I'm expecting these two time.Time instances are the same. But, I'm not sure why I got the compare result is false.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := int64(1497029400000)

    locYangon, _ := time.LoadLocation("Asia/Yangon")
    dt := fromEpoch(t).In(locYangon)

    locYangon2, _ := time.LoadLocation("Asia/Yangon")
    dt2 := fromEpoch(t).In(locYangon2)

    fmt.Println(dt2 == dt)
}

func fromEpoch(jsDate int64) time.Time {
    return time.Unix(0, jsDate*int64(time.Millisecond))
}

Playground

If I change "Asia/Yangon" to "UTC", they are the same.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := int64(1497029400000)

    locYangon, _ := time.LoadLocation("UTC")
    dt := fromEpoch(t).In(locYangon)

    locYangon2, _ := time.LoadLocation("UTC")
    dt2 := fromEpoch(t).In(locYangon2)

    fmt.Println(dt2 == dt)

}

func fromEpoch(jsDate int64) time.Time {
    return time.Unix(0, jsDate*int64(time.Millisecond))
}

Playground

Note: I'm aware of Equal method (in fact, I fixed with Equal method.) But after more testing, I found some interesting case which is "UTC" location vs "Asia/Yangon" location. I'm expecting either both equal or both not equal.

Update: Add another code snippet with "UTC". Update2: Update title to be more precise (I hope it will help to avoid duplication)

LoadLocation seems to return a pointer to a new value every time.

Anyway, the good way to compare dates is Equal:

fmt.Println(dt2.Equal(dt))

Playground: https://play.golang.org/p/9GW-LSF0wg.