将 YYYYMMDD 字符串转换为 Go 中的有效日期

use*_*673 2 go

我想将字符串转换为"20101011"有效的日期 ( 2010-10-11),但无法弄清楚如何去做。

我试过:

now := time.Now()
date := now.Format("20101011")
Run Code Online (Sandbox Code Playgroud)

date, _ := time.Parse("20101011", "20101011")
Run Code Online (Sandbox Code Playgroud)

没有一个工作。

pet*_*rSO 9

打包时间

import "time" 
Run Code Online (Sandbox Code Playgroud)

常数

const (
        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" // RFC822 with numeric zone
        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" // RFC1123 with numeric zone
        RFC3339     = "2006-01-02T15:04:05Z07:00"
        RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"
        Kitchen     = "3:04PM"
        // Handy time stamps.
        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"
)
Run Code Online (Sandbox Code Playgroud)

这些是用于 Time.Format 和 Time.Parse 的预定义布局。布局中使用的参考时间是具体时间:

Mon Jan 2 15:04:05 MST 2006

即 Unix 时间 1136239445。由于 MST 是 GMT-0700,因此参考时间可以认为是

01/02 03:04:05PM '06 -0700
Run Code Online (Sandbox Code Playgroud)

要定义您自己的格式,请写下按照您的方式格式化的参考时间;有关示例,请参阅 ANSIC、StampMicro 或 Kitchen 等常量的值。该模型是为了演示参考时间的样子,以便 Format 和 Parse 方法可以将相同的转换应用于一般时间值。

time格式字符串"20060102"用于YYYYMMDD. 将time格式字符串"2006-01-02"用于YYYY-MM-DD.

例如,

package main

import (
    "fmt"
    "time"
)

func main() {
    now := time.Now()
    fmt.Println(now)
    date := now.Format("20060102")
    fmt.Println(date)
    date = now.Format("2006-01-02")
    fmt.Println(date)
    date2, err := time.Parse("20060102", "20101011")
    if err == nil {
        fmt.Println(date2)
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

2009-11-10 23:00:00 +0000 UTC
20091110
2009-11-10
2010-10-11 00:00:00 +0000 UTC
Run Code Online (Sandbox Code Playgroud)