格式化为 time.Time,以毫秒为单位

分享于2022年07月16日 go 问答
【问题标题】:格式化为 time.Time,以毫秒为单位 (hh:mm:ss.xxx) Golang(Format to time.Time with milliseconds (hh:mm:ss.xxx) Golang)
【发布时间】:2022-06-29 02:47:11
【问题描述】:

我希望将基本上类似于 20220628-13:47:09.053 time.Time 值格式化为 time.Time 13:47:09.053

我正在使用 Format Parse 来执行此操作,但 date 的输出一直有错误:

booktime := book.UpdatedAt.Format("15:04:05.000") //book.UpdatedAt have 20220628-13:47:09.053  time.Time value
fmt.Printf("booktime : %s", booktime) 
date, error := time.Parse("15:04:05.000", booktime)
fmt.Printf("date : %s", date)
if error != nil {
    fmt.Println(error)
}

输出:

>>> booktime : 13:47:09.053 //But this is a string
>>> date : 0000-01-01 13:47:09.053 +0000 UTC //It should be 13:47:09.053

有什么帮助吗?

  • 我又想你需要像这样转换成字符串部分 fmt.Sprintf("%02d:%02d:%02d",date.Hour(), date.Minute(), date.Second())
  • 那么,你有一个字符串,你把它转换成一个时间(带日期),你想要一个只包含时间的字符串?也许这个? str := date.Format("15:04:05.999")

【解决方案1】:

这似乎可以做到:

package format
import "time"

func format_time(value string) (string, error) {
   t, err := time.Parse("20060102-15:04:05.999", value)
   if err != nil {
      return "", err
   }
   return t.Format("15:04:05.000"), nil
}