为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
浮云间 2021-11-22 18:15:13
我想将字符串转换为"20101011"有效的日期 ( 2010-10-11),但无法弄清楚如何去做。我试过:now := time.Now() date := now.Format("20101011")和date, _ := time.Parse("20101011", "20101011")没有一个工作。
查看完整描述

2 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

打包时间

import "time"

常数

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


查看完整回答
反对 回复 2021-11-22
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

您可以执行以下操作:


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


查看完整回答
反对 回复 2021-11-22
  • 2 回答
  • 0 关注
  • 184 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信