Ce face time.Weekday
time.Weekday este un întreg: time.Sunday = 0, time.Monday = 1 … time.Saturday = 6. Îl returnează t.Weekday(). String() dă numele englezesc ("Monday"), apelat automat de fmt.
Pentru că duminica este 0, un tablou cu nume românești trebuie să înceapă cu duminică.
Ce returnează
String() returnează numele zilei în engleză.
Exemple
Exemplul 1: Program de lucru pe zile
package main
import (
"fmt"
"time"
)
var ziRo = [...]string{"duminică", "luni", "marți", "miercuri", "joi", "vineri", "sâmbătă"}
func program(z time.Weekday) string {
switch z {
case time.Saturday:
return "10:00-14:00"
case time.Sunday:
return "închis"
default:
return "09:00-18:00"
}
}
func main() {
for z := time.Sunday; z <= time.Saturday; z++ {
fmt.Printf("%d %-9s %-9s %s\n", z, z, ziRo[z], program(z))
}
}
Rezultat
0 Sunday duminică închis
1 Monday luni 09:00-18:00
2 Tuesday marți 09:00-18:00
3 Wednesday miercuri 09:00-18:00
4 Thursday joi 09:00-18:00
5 Friday vineri 09:00-18:00
6 Saturday sâmbătă 10:00-14:00
Exemplul 2: Următoarea zi de luni
package main
import (
"fmt"
"time"
)
func urmatoarea(t time.Time, zi time.Weekday) time.Time {
zile := (int(zi) - int(t.Weekday()) + 7) % 7
if zile == 0 {
zile = 7
}
return t.AddDate(0, 0, zile)
}
func main() {
azi := time.Date(2026, time.October, 22, 0, 0, 0, 0, time.UTC)
fmt.Println("Azi:", azi.Format("02.01.2006"), azi.Weekday())
l := urmatoarea(azi, time.Monday)
fmt.Println("Luni următoare:", l.Format("02.01.2006"), l.Weekday().String())
}
Rezultat
Azi: 22.10.2026 Thursday
Luni următoare: 26.10.2026 Monday
Greșeli frecvente
- Presupui că luni este 0. În Go luni este 1, iar duminica este 0.
Comenzi înrudite
time.Time.Weekday: Ziua săptămânii (Weekday), ziua din an (YearDay) și numărul săptămânii ISO (ISOWeek) pentru un moment.time.Month: Tipul pentru lunile anului, de la time.January (1) la time.December (12); String() dă numele englezesc.time.Time.AddDate: Adaugă ani, luni și zile din calendar la o dată (de exemplu scadența peste o lună) și normalizează rezultatul.