Как отформатировать текущее время в формате ггггММддЧЧммсс?


120

Я пытаюсь отформатировать текущее время в этом формате yyyyMMddHHmmss.

t := time.Now()
fmt.Println(t.Format("yyyyMMddHHmmss"))

Это выводит:

yyyyMMddHHmmss

Какие-либо предложения?


Вот пример того, как работает форматирование даты. Это и преобразование строки во время, и печать времени в определенном формате. play.golang.org/p/qK6_9KNJNx
Нитеш,

Ответы:


243

Использовать

fmt.Println(t.Format("20060102150405"))

поскольку Go использует следующие константы для форматирования даты, см. здесь

const (
    stdLongMonth      = "January"
    stdMonth          = "Jan"
    stdNumMonth       = "1"
    stdZeroMonth      = "01"
    stdLongWeekDay    = "Monday"
    stdWeekDay        = "Mon"
    stdDay            = "2"
    stdUnderDay       = "_2"
    stdZeroDay        = "02"
    stdHour           = "15"
    stdHour12         = "3"
    stdZeroHour12     = "03"
    stdMinute         = "4"
    stdZeroMinute     = "04"
    stdSecond         = "5"
    stdZeroSecond     = "05"
    stdLongYear       = "2006"
    stdYear           = "06"
    stdPM             = "PM"
    stdpm             = "pm"
    stdTZ             = "MST"
    stdISO8601TZ      = "Z0700"  // prints Z for UTC
    stdISO8601ColonTZ = "Z07:00" // prints Z for UTC
    stdNumTZ          = "-0700"  // always numeric
    stdNumShortTZ     = "-07"    // always numeric
    stdNumColonTZ     = "-07:00" // always numeric
)

56
на самом деле формат голанга очень странный. почему бы не использовать стиль yyyymmddHHiiss, но использовать "" 2006/01/02/15/04/05 ", я не понимаю настоящую причину
Kewin

11
Строка макета представляет собой отметку времени, 2 января 15:04:05 2006 MST. Легкий способ запомнить это значение состоит в том, что оно содержит, когда представлено в этом порядке, значения (выровненные с элементами выше): 1 2 3 4 5 6-7 Из golang.org/src/time/example_test.go
kakilangit 02

28
Техника мнемоники для тех, кто находится за пределами США: представьте, что вы делали 2 января 2006 года, всего через пять секунд после 15:04, но представьте, что это происходит в Буркина-Фасо (UTC -7). В следующий раз, когда вам нужно будет отформатировать дату, просто запомните это конкретное событие (!)
Энрико,

3
Я не знал последовательной мнемоники, удобно, но давай, почему сейчас не 1 февраля ...
Силасдавис

4
Итак, все, что мне нужно запомнить, это выстроить дату в порядке месяц-день-год, затем вставить время посередине и поставить часовой пояс после года, и это станет очень легко запомнить. Аккуратно. У кого-нибудь есть мнемоника для запоминания порядка этой мнемоники ..?
Joey

20

Этот вопрос появляется в верхней части поиска Google, когда вы находите «формат текущего времени golang», поэтому всем, кто хочет использовать другой формат, помните, что вы всегда можете позвонить по следующему адресу:

t := time.Now()

t.Year()

t.Month()

t.Day()

t.Hour()

t.Minute()

t.Second()

Например, чтобы получить текущую дату и время в формате «ГГГГ-ММ-ДДТЧЧ: ММ: СС» (например, 2019-01-22T12: 40: 55), вы можете использовать эти методы с fmt.Sprintf:

t := time.Now()
formatted := fmt.Sprintf("%d-%02d-%02dT%02d:%02d:%02d",
        t.Year(), t.Month(), t.Day(),
        t.Hour(), t.Minute(), t.Second())

Как всегда, помните, что документы - лучший источник знаний: https://golang.org/pkg/time/


4

В пакете Time в Golang есть несколько методов, на которые стоит обратить внимание.

func (Время) Формат

func (t Time) Format (строка макета) string Format возвращает текстовое представление значения времени, отформатированного в соответствии с макетом, который определяет формат, показывая, как ссылочное время,

Mon Jan 2 15:04:05 -0700 MST 2006 было бы показано, если бы это было значение; он служит примером желаемого результата. Затем те же правила отображения будут применены к значению времени. Предопределенные схемы ANSIC, UnixDate, RFC3339 и другие описывают стандартные и удобные представления эталонного времени. Для получения дополнительной информации о форматах и ​​определении эталонного времени см. Документацию для ANSIC и других констант, определенных в этом пакете.

Источник ( http://golang.org/pkg/time/#Time.Format )

Я также нашел пример определения макета ( http://golang.org/src/pkg/time/example_test.go )

func ExampleTime_Format() {
        // layout shows by example how the reference time should be represented.
        const layout = "Jan 2, 2006 at 3:04pm (MST)"
        t := time.Date(2009, time.November, 10, 15, 0, 0, 0, time.Local)
        fmt.Println(t.Format(layout))
        fmt.Println(t.UTC().Format(layout))
        // Output:
    // Nov 10, 2009 at 3:00pm (PST)
        // Nov 10, 2009 at 11:00pm (UTC)
    }

4
import("time")

layout := "2006-01-02T15:04:05.000Z"
str := "2014-11-12T11:45:26.371Z"
t, err := time.Parse(layout, str)
if err != nil {
    fmt.Println(err)
}
fmt.Println(t)

дает:

>> 2014-11-12 11:45:26.371 +0000 UTC
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.