代码之家  ›  专栏  ›  技术社区  ›  Vector

如何在Go(1.2.1)中将传统的美国日期字符串转换为ISO日期字符串?

  •  0
  • Vector  · 技术社区  · 2 年前

    我需要转换传统的美国约会,即 "05/24/2024" 到ISO日期字符串,即 "20240524" 在围棋中没有痛苦的琴弦操作。

    我尝试过这个代码:

    func showISODate() {
        dateStr := "05/24/2024"                           // date in 'String' data type
        dateValue, err := time.Parse("20060102", dateStr) // convert 'String' to 'Time' data type
        if err != nil {
            log.Println(err.Error())
        }
        fmt.Println(dateValue)                          // output: 0001-01-01 00:00:00 +0000 UTC
        dateStr = dateValue.Format("20060102")  // output: 00010101
        fmt.Println(dateStr)
    }
    

    此代码失败:输出为零,并显示错误消息: 将时间“05/24/2024”解析为“20060102”:无法将“05/24/24/2024“解析为“2006”

    我做错了什么?

    (注意,这个问题是关于 字符串转换 使用 time 包裹,并且不是关于的所谓副本的副本 日期/时间 操纵

    1 回复  |  直到 2 年前
        1
  •  1
  •   FirstOne    2 年前

    传递到的布局 time.Parse 应与输入格式匹配:

    func showISODate() {
        dateStr := "05/24/2024"                       
        dateValue, err := time.Parse("01/02/2006", dateStr) // updated layout
        if err != nil {
            log.Println(err.Error())
        }
        fmt.Println(dateValue)
        dateStr = dateValue.Format("20060102")
        fmt.Println(dateStr)
    }
    

    输出

    2024-05-24 00:00:00+0000 UTC
    20240524