Ce face time.Month
time.Month este un număr întreg cu nume: time.January = 1 … time.December = 12. Îl primești de la t.Month() și îl dai lui time.Date. Pentru că este un int, îl poți compara (m >= time.June), aduna (m + 1) sau converti (time.Month(3)).
Metoda String() returnează numele în engleză ("October"); fmt.Println o apelează automat. Pentru numele românești folosește un tablou propriu indexat cu luna.
Ce returnează
String() returnează numele lunii în engleză sau %!Month(13) pentru valori în afara intervalului.
Exemple
Exemplul 1: Numere, nume și anotimpuri
package main
import (
"fmt"
"time"
)
var lunaRo = [...]string{"", "ianuarie", "februarie", "martie", "aprilie", "mai", "iunie",
"iulie", "august", "septembrie", "octombrie", "noiembrie", "decembrie"}
func anotimp(m time.Month) string {
switch m {
case time.December, time.January, time.February:
return "iarnă"
case time.March, time.April, time.May:
return "primăvară"
case time.June, time.July, time.August:
return "vară"
}
return "toamnă"
}
func main() {
m := time.October
fmt.Println(m, int(m), m.String())
fmt.Println("În română:", lunaRo[m], "-", anotimp(m))
fmt.Println("Luna 3:", time.Month(3), "-", anotimp(time.Month(3)))
fmt.Println("Valoare greșită:", time.Month(13))
}
Rezultat
October 10 October
În română: octombrie - toamnă
Luna 3: March - primăvară
Valoare greșită: %!Month(13)
Exemplul 2: Parcurgerea lunilor unui an
Ziua 0 a lunii următoare este ultima zi a lunii curente, deci Day() dă numărul de zile.
package main
import (
"fmt"
"time"
)
func main() {
for m := time.January; m <= time.December; m++ {
zile := time.Date(2028, m+1, 0, 0, 0, 0, 0, time.UTC).Day()
fmt.Printf("%-9s %d zile\n", m, zile)
}
}
Rezultat
January 31 zile
February 29 zile
March 31 zile
April 30 zile
May 31 zile
June 30 zile
July 31 zile
August 31 zile
September 30 zile
October 31 zile
November 30 zile
December 31 zile
Greșeli frecvente
- Indexezi un tablou de 12 nume cu
t.Month(): luna 12 iese din tablou. Lunile încep de la 1, deci pune un element gol pe poziția 0 sau scade 1.
Comenzi înrudite
time.Time.Date: Citește data dintr-un moment: Date dă anul, luna și ziua deodată; Year, Month și Day le dau pe rând.time.Weekday: Tipul pentru zilele săptămânii, de la time.Sunday (0) la time.Saturday (6); String() dă numele englezesc.time.Time.Format: Transformă un moment în text după un model scris cu data de referință 2 ianuarie 2006, 15:04:05.