Тип time.Weekday
Тип time.Weekday представляет собой перечисление,
которое используется для обозначения дней недели в пакете
time. Он основан на целочисленном типе
int и содержит константы от time.Sunday
(0) до time.Saturday (6). Этот тип часто
возвращается методом Weekday структуры
time.Time.
Константы
Пакет time определяет следующие константы для
типа time.Weekday:
const (
Sunday Weekday = 0
Monday Weekday = 1
Tuesday Weekday = 2
Wednesday Weekday = 3
Thursday Weekday = 4
Friday Weekday = 5
Saturday Weekday = 6
)
Каждая константа соответствует определенному дню недели и может быть использована для сравнения и вычислений.
Синтаксис
type Weekday int
Тип Weekday является псевдонимом для
int, поэтому с ним можно выполнять
арифметические операции, а также преобразовывать в
целое число и обратно.
Пример использования
Давайте получим текущий день недели и выведем его в виде строки:
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
weekday := now.Weekday()
fmt.Printf("Today is %s\n", weekday)
}
Результат выполнения кода:
"Today is Monday"
Обратите внимание, что метод String типа
Weekday возвращает английское название дня
недели: "Sunday", "Monday" и так далее.
Пример сравнения
Давайте проверим, является ли текущий день выходным:
package 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")
}
}
Результат выполнения кода:
"It's a weekday"
В этом примере мы сравниваем полученный день недели
с константами time.Saturday и
time.Sunday для определения выходного дня.
Пример арифметики
Давайте вычислим, какой день недели будет через 3 дня от текущего:
package 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)
}
Результат выполнения кода:
"In 3 days it will be Thursday"
Так как Weekday основан на целочисленном типе,
мы можем выполнять с ним арифметические операции.
Оператор % 7 нужен для того, чтобы результат
оставался в диапазоне от 0 до 6.
Пример преобразования
Давайте преобразуем целое число в тип
time.Weekday и выведем название дня:
package main
import (
"fmt"
"time"
)
func main() {
// Преобразуем число 3 в Weekday
dayNum := 3
weekday := time.Weekday(dayNum)
fmt.Printf("Day number %d is %s\n", dayNum, weekday)
}
Результат выполнения кода:
"Day number 3 is Wednesday"
Преобразование выполняется с помощью приведения типа
time.Weekday(dayNum), где dayNum
может быть любым целым числом. При этом значение 0
соответствует воскресенью, 1 - понедельнику и так
далее.
Смотрите также
-
метод
time.Time.Weekday,
который возвращает день недели для объекта времени -
тип
time.Month,
который аналогичным образом представляет месяц года -
структуру
time.Time,
которая предоставляет методы для работы с датой и временем -
функцию
time.Now,
которая возвращает текущее время