Um Time em Go é um tipo que descreve um momento no tempo.
As informações de data e hora podem ser acessadas, comparadas e manipuladas por meio dos seus métodos, mas também existem algumas funções chamadas no próprio pacote time.
A data e hora atuais podem ser obtidas pela função time.Now.
A função time.Parse faz o parse de strings, transformando-as em valores do tipo Time.
Go tem uma forma especial de definir o layout que você espera para o parse.
Você precisa escrever um exemplo do layout usando os valores deste timestamp especial:
Mon Jan 2 15:04:05 -0700 MST 2006.
Por exemplo:
import "time"
func parseTime() time.Time {
date := "Tue, 09/22/1995, 13:00"
layout := "Mon, 01/02/2006, 15:04"
t, err := time.Parse(layout,date) // time.Time, error
}
// => 1995-09-22 13:00:00 +0000 UTC
O método Time.Format() retorna uma representação do tempo em string.
Assim como na função Parse, o layout de destino é novamente definido por meio de um exemplo que usa os valores do timestamp especial.
Por exemplo:
import (
"fmt"
"time"
)
func main() {
t := time.Date(1995,time.September,22,13,0,0,0,time.UTC)
formattedTime := t.Format("Mon, 01/02/2006, 15:04") // string
fmt.Println(formattedTime)
}
// => Fri, 09/22/1995, 13:00
Para um layout personalizado, use uma combinação dessas opções. Em Go, também estão disponíveis constantes de formato predefinidas para data e timestamp.
| Tempo | Opções |
|---|---|
| Ano | 2006 ; 06 |
| Mês | Jan ; January ; 01 ; 1 |
| Dia | 02 ; 2 ; _2 (para zero à esquerda) |
| Dia da semana | Mon ; Monday |
| Hora | 15 ( formato de 24 horas ) ; 3 ; 03 (AM ou PM) |
| Minuto | 04 ; 4 |
| Segundo | 05 ; 5 |
| Marcador AM/PM | PM |
| Dia do ano | 002 ; __2 |
O tipo time.Time tem vários métodos para acessar um horário específico. Por exemplo: Hora: Time.Hour(), Mês: Time.Month().
Você encontra mais detalhes sobre como isso funciona na documentação oficial.
O pacote time inclui outro tipo, Duration, que representa o tempo decorrido, além de suporte para localidades/fusos horários, temporizadores e outras funcionalidades relacionadas que serão abordadas em outro conceito.
Neste exercício, você vai trabalhar em um agendador de compromissos para um salão de beleza que abriu em 15 de setembro de 2012.
Você tem cinco tarefas, e todas elas envolvem datas de agendamento.
Implemente a função Schedule para interpretar uma representação textual de uma data de agendamento no formato time.Time correspondente:
Schedule("7/25/2019 13:45:00")
// => 2019-07-25 13:45:00 +0000 UTC
Implemente a função HasPassed, que recebe uma data de agendamento e verifica se o agendamento ficou em algum momento no passado:
HasPassed("July 25, 2019 13:45:00")
// => true
Implemente a função IsAfternoonAppointment, que recebe uma data de agendamento e verifica se o agendamento é à tarde (>= 12:00 e < 18:00):
IsAfternoonAppointment("Thursday, July 25, 2019 13:45:00")
// => true
Implemente a função Description, que recebe uma data de agendamento e retorna uma descrição dessa data e desse horário:
Description("7/25/2019 13:45:00")
// => "You have an appointment on Thursday, July 25, 2019, at 13:45."
Implemente a função AnniversaryDate, que retorna a data de aniversário da abertura do salão no ano atual em UTC.
Considerando que o ano atual é 2020:
AnniversaryDate()
// => 2020-09-15 00:00:00 +0000 UTC
Observação: o valor de retorno é um time.Time e o horário do dia não importa.
Crie sua conta no Exercism para aprender e dominar Go com 34 conceitos165 exercícios e mentoria humana de verdade, tudo de graça.