【问题标题】:How to convert date to different formats?如何将日期转换为不同的格式?
【发布时间】:2016-04-23 06:43:34
【问题描述】:

我想在 Go 中将日期格式从 2010-01-23 11:44:20 转换为 Jan 23 '10 at 11:44。我尝试了 time 包中的几个功能,但无法实现。

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: date go time date-conversion


    【解决方案1】:

    您可以使用时间包的ParseFormat 将其转换为所需的文本格式。两者都采用您需要的格式作为参数的参考时间(2006-01-02 15:04:05),这使得格式相当容易理解。

    dtstr1 := "2010-01-23 11:44:20"
    dt,_ := time.Parse("2006-01-02 15:04:05", dtstr1)
    
    dtstr2 := dt.Format("Jan 2 '06 at 15:04")
    

    A playground to test with.

    【讨论】:

      【解决方案2】:

      一种方法是使用 time 包的 Parse 和 Format 函数,
      或者另一种方法是编写自己的格式化程序函数,如下所示:

      package main
      
      import (
          "bytes"
          "fmt"
          "time"
      )
      
      //2010-01-23 11:44:20 to Jan 23 '10 at 11:44
      func FormatDateTime(t time.Time) string {
          var buffer bytes.Buffer
          buffer.WriteString(t.Month().String()[:3])
          buffer.WriteString(fmt.Sprintf(" %2d '%2d at %2d:%2d", t.Day(), t.Year()%100, t.Hour(), t.Minute()))
          return buffer.String()
      }
      
      func main() {
          t := time.Now()
          str := FormatDateTime(t)
          fmt.Println(str) //Apr 23 '16 at 11:50
      }
      

      【讨论】:

        猜你喜欢
        • 2013-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        • 2016-04-15
        • 1970-01-01
        相关资源
        最近更新 更多