Як відформатувати поточний час у форматі yyyyMMddHHmmss?


118

Я намагаюся відформатувати поточний час, використовуючи цей формат yyyyMMddHHmmss.

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

Це вихід:

yyyyMMddHHmmss

Будь-які пропозиції?


Ось зразок ігрового майданчика про те, як працює форматування дати. Це одночасно перетворює рядок у час і роздруковує час у визначеному форматі. play.golang.org/p/qK6_9KNJNx
Нітеш

Відповіді:


241

Використовуйте

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

28
Мнемонічна техніка для людей поза США: порахуйте, що ви робили 2 січня 2006 року, лише через п’ять секунд після 15:04, але уявіть, що це відбувається в Буркіна-Фасо (UTC -7). Наступного разу, коли вам потрібно буде відформатувати побачення, просто запам'ятайте цю конкретну подію (!)
Енріко

3
Я не знав послідовної мнемоніки, зручно, але давай, чому це не 1-го лютого ...
silasdavis

4
Тож все, що я повинен пам’ятати, - це вирівняти дату в порядку місяць-день-рік, потім дотримуватися час посередині, а часовий пояс поставити після року, і це стає легко легко запам'ятовуватися. Акуратний. Хто-небудь отримав мнемоніку для запам'ятовування порядку цього мнемоніка ..?
Joey Sabey

20

Це питання перебуває у верхній частині пошуку Google, коли ви знайдете "формат поточного часу голанг", тому для всіх, хто хоче скористатися іншим форматом, пам’ятайте, що ви завжди можете зателефонувати на:

t := time.Now()

t.Year()

t.Month()

t.Day()

t.Hour()

t.Minute()

t.Second()

Наприклад, щоб отримати поточний час дати як "YYYY-MM-DDTHH: MM: SS" (наприклад, 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

Часовий пакет в Голангу має деякі методи, які, можливо, варто переглянути.

Формат (час)

func (t Час) Формат (рядок макета) рядок Формат повертає текстове подання значення часу, відформатованого відповідно до макета, яке визначає формат, показуючи, як опорний час,

Пн 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.