如何解析这个日期2018-10-22T2250?

时间:2019-06-01 10:28:19

标签: go time timestamp

如何用golang解析这个奇怪的日期时间2018-10-22T2250? 我找不到日期布局

2 个答案:

答案 0 :(得分:1)

您可以创建自己的自定义格式。在生产中,您还应该处理错误。

package main

import (
    "fmt"
    "time"
)

func main() {
    timeString := "2018-10-22T2250"
    timeFormat := "2006-01-02T1504"

    t, _ := time.Parse(timeFormat, timeString)

    fmt.Println(t)
}

Playground link

这将返回UTC时间。您可能需要调整到其他时区,具体取决于您的来源。

//init the location
loc, _ := time.LoadLocation("Asia/Shanghai")
//localize the time
localTime := t.In(loc)

答案 1 :(得分:-2)

Go中有固定的日期格式布局选项 如您所见,格式为源代码here

LongMonth               // "January"
Month                   // "Jan"
NumMonth                // "1"
ZeroMonth               // "01"
LongWeekDay             // "Monday"
WeekDay                 // "Mon"
Day                     // "2"
UnderDay                // "_2"
ZeroDay                 // "02"
Hour                    // "15"
Hour12                  // "3"
ZeroHour12              // "03"
Minute                  // "4"
ZeroMinute              // "04"
Second                  // "5"
ZeroSecond              // "05"
LongYear                // "2006"
Year                    // "06"
PM                      // "PM"
pm                      // "pm"
TZ                      // "MST"
ISO8601TZ               // "Z0700"  // prints Z for UTC
ISO8601SecondsTZ        // "Z070000"
ISO8601ShortTZ          // "Z07"
ISO8601ColonTZ          // "Z07:00" // prints Z for UTC
ISO8601ColonSecondsTZ   // "Z07:00:00"
NumTZ                   // "-0700"  // always numeric
NumSecondsTz            // "-070000"
NumShortTZ              // "-07"    // always numeric
NumColonTZ              // "-07:00" // always numeric
NumColonSecondsTZ       // "-07:00:00"
FracSecond0             // ".0", ".00", ... , trailing zeros included
FracSecond9             // ".9", ".99", ..., trailing zeros omitted

所以如果您需要创建格式来解析“ 2018-10-22T2250”

您需要使用“ 2006-01-02T1504”格式

,代码为:

package main

import (
    "fmt"
    "time"
)

func main() {
    input := "2018-10-22T2250"
    timeFormat := "2006-01-02T1504"

    output, err := time.Parse(timeFormat, input)
    if err != nil {
        panic(err)
    }
    fmt.Println(output)
}

Playground example