Go не использует формат yyyy-mm-dd для форматирования времени. Вместо этого вы форматируете специальный параметр макета (layout)
Mon Jan 2 15:04:05 MST 2006
так же, как время или дата должны быть отформатированы. (Эту дату легче запомнить, когда она написана как 01/02 03:04:05PM ‘06 -0700.)
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
Они имеют следующие сигнатуры:
func Parse(layout, value string) (Time, error)
func (t Time) Format(layout string) string
Стандартные форматы времени и даты
Go layout | Примечание |
---|---|
January 2, 2006 01/02/06 Jan-02-06 |
Date |
15:04:05 3:04:05 PM |
Time |
Jan _2 15:04:05 Jan _2 15:04:05.000000 |
Timestamp с микросекундами |
2006-01-02T15:04:05-0700 2006-01-02 15:04:05 |
ISO 8601 (RFC 3339) |
02 Jan 06 15:04 MST 02 Jan 06 15:04 -0700 |
RFC 822 с числовой зоной |
Mon, 02 Jan 2006 15:04:05 MST Mon, 02 Jan 2006 15:04:05 -0700 |
RFC 1123 с числовой зоной |
Также доступны следующие предопределенные константы формата даты и времени.
ANSIC = "Mon Jan _2 15:04:05 2006"
UnixDate = "Mon Jan _2 15:04:05 MST 2006"
RubyDate = "Mon Jan 02 15:04:05 -0700 2006"
RFC822 = "02 Jan 06 15:04 MST"
RFC822Z = "02 Jan 06 15:04 -0700"
RFC850 = "Monday, 02-Jan-06 15:04:05 MST"
RFC1123 = "Mon, 02 Jan 2006 15:04:05 MST"
RFC1123Z = "Mon, 02 Jan 2006 15:04:05 -0700"
RFC3339 = "2006-01-02T15:04:05Z07:00"
RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"
Kitchen = "3:04PM"
// Удобные метки времени.
Stamp = "Jan _2 15:04:05"
StampMilli = "Jan _2 15:04:05.000"
StampMicro = "Jan _2 15:04:05.000000"
StampNano = "Jan _2 15:04:05.000000000"
Параметры макета
Тип | Параметры |
---|---|
Год | 06 2006 |
Месяц | 01 1 Jan January |
День | 02 2 _2 (ширина 2, выравнивание справа) |
День недели | Mon Monday |
Часы | 03 3 15 |
Минуты | 04 4 |
Секунды | 05 5 |
ms μs ns | .000 .000000 .000000000 |
ms μs ns | .999 .999999 .999999999 (завершающие нули удалены) |
am/pm | PM pm |
Timezone (временная зона) | MST |
Смещение | -0700 -07 -07:00 Z0700 Z07:00 |
Крайние случаи
Невозможно указать, что час должен отображаться без начального нуля в 24-часовом формате времени.
Нельзя указывать полночь как 24:00 вместо 00:00. Типичное использование для этого будет давать часы работы, заканчивающиеся в полночь, например, с 07:00 до 24:00.
Невозможно указать время, содержащее високосную секунду: 23:59:60. Фактически, пакет времени предполагает григорианский календарь без високосных секунд.
Читайте также:
Комментариев нет:
Отправить комментарий