четверг, 30 июля 2020 г.

Пакет time в Golang, тип Time, методы After, Before, Equal, IsZero

Метод After

func (t Time) After(u Time) bool

After сообщает, является ли момент времени t после u.

Пример использования After

package main

import (
    "fmt"
    "time"
)

func main() {
    year2000 := time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)
    year3000 := time.Date(3000, 1, 1, 0, 0, 0, 0, time.UTC)

    isYear3000AfterYear2000 := year3000.After(year2000) // True
    isYear2000AfterYear3000 := year2000.After(year3000) // False

    fmt.Printf("year3000.After(year2000) = %v\n", isYear3000AfterYear2000)
    fmt.Printf("year2000.After(year3000) = %v\n", isYear2000AfterYear3000)

}

Вывод:

year3000.After(year2000) = true
year2000.After(year3000) = false

Метод Before

func (t Time) Before(u Time) bool

Before сообщает, находится ли момент времени t перед u.

Пример использования Before

package main

import (
    "fmt"
    "time"
)

func main() {
    year2000 := time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)
    year3000 := time.Date(3000, 1, 1, 0, 0, 0, 0, time.UTC)

    isYear2000BeforeYear3000 := year2000.Before(year3000) // True
    isYear3000BeforeYear2000 := year3000.Before(year2000) // False

    fmt.Printf("year2000.Before(year3000) = %v\n", isYear2000BeforeYear3000)
    fmt.Printf("year3000.Before(year2000) = %v\n", isYear3000BeforeYear2000)

}

Вывод:

year2000.Before(year3000) = true
year3000.Before(year2000) = false

Метод Equal

func (t Time) Equal(u Time) bool

Equal сообщает, представляют ли t и u один и тот же момент времени. Два времени могут быть равны, даже если они находятся в разных местах. Например, 6:00 +0200 and 4:00 UTC равны. О ловушках использования == со значениями Time; большая часть кода должна использовать вместо этого Equal.

Пример использования Equal

package main

import (
    "fmt"
    "time"
)

func main() {
    secondsEastOfUTC := int((8 * time.Hour).Seconds())
    beijing := time.FixedZone("Beijing Time", secondsEastOfUTC)

    // В отличие от оператора равенства (==), Equal знает, 
    // что d1 и d2 являются одним и тем же моментом, 
    // но в разных часовых поясах.
    d1 := time.Date(2000, 2, 1, 12, 30, 0, 0, time.UTC)
    d2 := time.Date(2000, 2, 1, 20, 30, 0, 0, beijing)

    datesEqualUsingEqualOperator := d1 == d2
    datesEqualUsingFunction := d1.Equal(d2)

    fmt.Printf("datesEqualUsingEqualOperator = %v\n", datesEqualUsingEqualOperator)
    fmt.Printf("datesEqualUsingFunction = %v\n", datesEqualUsingFunction)

}

Вывод:

datesEqualUsingEqualOperator = false
datesEqualUsingFunction = true

Метод IsZero

func (t Time) IsZero() bool

IsZero сообщает, представляет ли t нулевой момент времени, January 1, year 1, 00:00:00 UTC.

Пример использования IsZero

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(1, time.January, 1, 00, 0, 0, 0, time.UTC)
    fmt.Printf("Это нулевое значение Time %s\n", t.UTC())
    fmt.Printf("Верно? %v\n", t.IsZero())
}

Вывод:

Это нулевое значение Time 0001-01-01 00:00:00 +0000 UTC
Верно? true


Читайте также:


Комментариев нет:

Отправить комментарий