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

时间:2015-11-18 23:30:54

标签: go

我想将字符串def try_until(func, max_tries, sleep_time): for _ in range(0,max_tries): try: return func() except: sleep(sleep_time) raise WellNamedException() 转换为有效日期("20101011"),但无法确定如何执行此操作。

我试过了:

2010-10-11

now := time.Now()
date := now.Format("20101011")

两个人都没有工作。

2 个答案:

答案 0 :(得分:3)

  

Package time

import "time" 
     

Constants

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"
)
     

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

     

Mon Jan 2 15:04:05 MST 2006

     

这是Unix时间1136239445.由于MST是GMT-0700,所以参考   时间可以被认为是

01/02 03:04:05PM '06 -0700
     

要定义自己的格式,请记下参考时间   看起来像格式化你的方式;看到像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)
    }
}

输出:

2009-11-10 23:00:00 +0000 UTC
20091110
2009-11-10
2010-10-11 00:00:00 +0000 UTC

答案 1 :(得分:0)

您可以执行以下操作:

dateStr := "20210131"                           // date in 'String' data type
dateValue, _ := time.Parse("20060102", dateStr) // convert 'String' to 'Time' data type
fmt.Println(dateValue)                          // output: 2021-01-31 00:00:00 +0000 UTC
dateStr = dateValue.Format("2006-01-02")       // Format return a 'string' in your specified layout (YYYY-MM-DD)
fmt.Println(dateStr)                           // Output: 2021-01-31