Go не использует формат yyyy-mm-dd для форматирования времени. Вместо этого вы форматируете специальный параметр макета (layout). Типа так: Mon Jan 2 15:04:05 MST 2006. Так же, как время или дата должны быть отформатированы. (Эту дату легче запомнить, когда она написана как 01/02 03:04:05PM ‘06 -0700.)
gracie: Go не использует формат yyyy-mm-dd для форматирования времени. Вместо этого вы форматируете специальный параметр макета (layout). Типа так: Mon Jan 2 15:04:05 MST 2006. Так же, как время или дата должны быть отформатированы. (Эту дату легче запомнить, когда она написана как 01/02 03:04:05PM ‘06 -0700.)
Это-то понятно. А как сделать так, чтобы Go нормально работал с этим? Есть же какие-то функции и методы для решения этой проблемы. И если можно, покажи на примере реального кода.
Ну вот, смотри:
const (
layoutISO = "2006-01-02"
layoutUS = "January 2, 2006"
)
date := "1999-12-31"
t, _ := time.Parse(layoutISO, date)
fmt.Println(t)
// 1999-12-31 00:00:00 +0000 UTC
fmt.Println(t.Format(layoutUS))
// December 31, 1999
Функция time.Parse разбирает строку даты, а функция Format форматирует time. Также не забудь подключить библиотеку "time".
Нужно ещё учитывать крайние случае при работе с форматированием даты/времени:
1. Невозможно указать, что час должен отображаться без начального нуля в 24-часовом формате времени.
2. Нельзя указывать полночь как 24:00 вместо 00:00. Типичное использование для этого будет давать часы работы, заканчивающиеся в полночь, например, с 07:00 до 24:00.
3. Невозможно указать время, содержащее високосную секунду: 23:59:60. Фактически, пакет времени предполагает григорианский календарь без високосных секунд.
Спасибо, ребят, очень сильно выручили, теперь всё стало понятно. Пойду дописывать свою программку, только теперь я уже знаю, как сражаться с этой “проблемой”.