Estrutura do Pacote
O pacote Time contem um poderoso ferramental que permite ao utilizador de Go manipular/exibir1 dados sobre o tempo.
Alguns recursos do pacote:
- After()
- Sleep()
- Tick()
- Duration
- Location
- Month
- ParseError
- Ticker
- Time
- Timer
- Weekday
Além das três funções elencadas, cada Type possui seu conjunto de Métodos que entregam versatilidade no manuseio de operações envolvendo tempo. Esses recursos estão distribuidos nos arquivos fonte:
- format.go
- format_rfc3339.go
- sleep.go
- sys_unix.go
- tick.go
- time.go
- zoneinfo.go
- zoneinfo_goroot.go
- zoneinfo_read.go
- zoneinfo_unix.go
Disponível em: https://cs.opensource.google/go/go/+/go1.21.0:src/time
Datas e Faixas de Datas
O Pacote Time utiliza um conjunto de Constantes que auxiliam no manuseio e
e formatação de objetos e operações usando tempo. Para exemplificar, e sem nenhuma vontade de esgotar o assunto, a constante
Layout será discutida a seguir.
const Layout = "01/02 03:04:05PM '06 -0700" // The reference time, in numerical order.
objDate := time.Date(2023, 8, 15, 14, 57, 30, 0, time.Local)
fmt.Printf("objDate: %v\n", objDate.Format(Layout))
// Output:
objDate: 08/15 02:57:30PM '23 -0300
Essa referência do tempo em ordem numérica indica o output escolhido. O exemplo acima usa uma sugestão contida na documentação e o examplo a seguir tem uma adaptação para o Brasil.
const Layout02 = "02/01/2006 15:04:05 -0700"
objDate := time.Date(2023, 8, 15, 14, 57, 30, 0, time.Local)
fmt.Printf("objDate: %v\n", objDate.Format(Layout02))
// Output:
objDate: 15/08/2023 14:57:30 -0300
// Importante:
Sobre os 7 (sete) parâmetros usados em **const Layout02 = "02/01/2006 15:04:05 -0700"**,
tem-se:
1. **02** dia
2. **01** mês
3. **2006** ou **06** ano
4. **03** ou **15** hora
5. **04** minuto
6. **05** segundo
7. **-07** ou **-0700** time.UTC, time.Local
Type time.Time
time.Time é uma estrutura de dados do tipo struct e tem como valor zero January 1, year 1, 00:00:00.000000000 UTC. Esse valor pode ser detectado pela função IsZero().
“Os cálculos do calendário sempre assumem um calendário gregoriano, sem segundos bissextos” ↩︎