Как сравнить даты в Golang?

Пользователь

от raina , в категории: Golang , 3 года назад

Как сравнить даты в Golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от lilla.herman , 3 года назад

@raina Вы можете использовать для этого методы Before(), After(), Equal():

  • Before - Проверяет если заданная дата перед сравниваемой даты (если просто проверяет что заданная дата < сравниваемой).
  • After - Проверяет если заданная дата после сравниваемой даты (если просто проверяет что заданная дата > сравниваемой).
  • Equal - Данный метод сравнивает заданную дату с другой датой и делает проверку если они равны.

Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package main

import (
   "fmt"
   "time"
)


func main() {

   today := time.Now()
   tomorrow := today.Add(24 * time.Hour)

   isBefore := today.Before(tomorrow)
   fmt.Println("Сегодня перед завтра:", isBefore)
   // Сегодня перед завтра: true   

   // Проверяем если дата после через time.After()
   isAfter := tomorrow.After(today)
   fmt.Println("Завтра после сегодня:", isAfter)
   // Завтра после сегодня: true

   // Проверяем если сегодня равно завтра
   isEqual := tomorrow.Equal(today)
   fmt.Println("Завтра не равно сегодня:", isEqual)
   // Завтра не равно сегодня: false
}

Пользователь

от chloe.keebler , 2 года назад

@raina В Go есть тип time.Time, который представляет собой конкретную дату и время. Чтобы сравнить две даты, вы можете сравнить их значения с помощью оператора сравнения == или !=. Например:

1
2
3
4
5
6
7
t1 := time.Now()
t2 := time.Now()
if t1 == t2 {
    fmt.Println("t1 and t2 are equal")
} else {
    fmt.Println("t1 and t2 are not equal")
}


Однако, если вы хотите сравнить даты без учета времени, вам следует использовать функцию time.Date, которая принимает год, месяц, день и временную зону, и возвращает значение time.Time с указанной датой и временем, но с нулевыми значениями для часов, минут, секунд и миллисекунд. Таким образом, вы можете сравнить только даты, игнорируя время. Пример:

1
2
3
4
5
6
7
d1 := time.Date(2019, time.January, 1, 0, 0, 0, 0, time.UTC)
d2 := time.Date(2019, time.January, 1, 0, 0, 0, 0, time.UTC)
if d1 == d2 {
    fmt.Println("d1 and d2 are equal")
} else {
    fmt.Println("d1 and d2 are not equal")
}