Тип time.Weekday

Тип time.Weekday представляет собой перечисление, которое используется для обозначения дней недели в пакете time. Он основан на целочисленном типе int и содержит константы от time.Sunday (0) до time.Saturday (6). Этот тип часто возвращается методом Weekday структуры time.Time.

Константы

Пакет time определяет следующие константы для типа time.Weekday:

goconst (
  Sunday  Weekday = 0
  Monday  Weekday = 1
  Tuesday   Weekday = 2
  Wednesday Weekday = 3
  Thursday  Weekday = 4
  Friday  Weekday = 5
  Saturday  Weekday = 6
)

Каждая константа соответствует определенному дню недели и может быть использована для сравнения и вычислений.

Синтаксис

gotype Weekday int

Тип Weekday является псевдонимом для int, поэтому с ним можно выполнять арифметические операции, а также преобразовывать в целое число и обратно.

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

Давайте получим текущий день недели и выведем его в виде строки:

gopackage main

import (
  "fmt"
  "time"
)

func main() {
  now := time.Now()
  weekday := now.Weekday()
  fmt.Printf("Today is %s\n", weekday)
}

Результат выполнения кода:

go"Today is Monday"

Обратите внимание, что метод String типа Weekday возвращает английское название дня недели: "Sunday", "Monday" и так далее.

Пример сравнения

Давайте проверим, является ли текущий день выходным:

gopackage main

import (
  "fmt"
  "time"
)

func main() {
  now := time.Now()
  weekday := now.Weekday()

  if weekday == time.Saturday || weekday == time.Sunday {
    fmt.Println("It's the weekend!")
  } else {
    fmt.Println("It's a weekday")
  }
}

Результат выполнения кода:

go"It's a weekday"

В этом примере мы сравниваем полученный день недели с константами time.Saturday и time.Sunday для определения выходного дня.

Пример арифметики

Давайте вычислим, какой день недели будет через 3 дня от текущего:

gopackage main

import (
  "fmt"
  "time"
)

func main() {
  now := time.Now()
  currentWeekday := now.Weekday()

  // Добавляем 3 дня к текущему дню недели
  futureWeekday := (currentWeekday + 3) % 7
  fmt.Printf("In 3 days it will be %s\n", futureWeekday)
}

Результат выполнения кода:

go"In 3 days it will be Thursday"

Так как Weekday основан на целочисленном типе, мы можем выполнять с ним арифметические операции. Оператор % 7 нужен для того, чтобы результат оставался в диапазоне от 0 до 6.

Пример преобразования

Давайте преобразуем целое число в тип time.Weekday и выведем название дня:

gopackage main

import (
  "fmt"
  "time"
)

func main() {
  // Преобразуем число 3 в Weekday
  dayNum := 3
  weekday := time.Weekday(dayNum)
  fmt.Printf("Day number %d is %s\n", dayNum, weekday)
}

Результат выполнения кода:

go"Day number 3 is Wednesday"

Преобразование выполняется с помощью приведения типа time.Weekday(dayNum), где dayNum может быть любым целым числом. При этом значение 0 соответствует воскресенью, 1 - понедельнику и так далее.

Смотрите также

  • метод time.Time.Weekday,
    который возвращает день недели для объекта времени
  • тип time.Month,
    который аналогичным образом представляет месяц года
  • структуру time.Time,
    которая предоставляет методы для работы с датой и временем
  • функцию time.Now,
    которая возвращает текущее время