【问题标题】:Convert string to time struct in Golang在 Golang 中将字符串转换为时间结构
【发布时间】:2020-08-27 14:09:10
【问题描述】:

我的方法以这种格式记录当前时间

now = time.Now().format(time.RFC3339)

我想把它分配给

message.LastReadAt = &now // field LastReadAt *time.Time`example:"2020-05-01T15:00:00Z"` of Message type

但是当我尝试“message.LastReadAt = &now”时收到此消息

Cannot use '&now' (type *string) as type *time.Time   

如何将变量“now”转换回“*time.Time”类型?

【问题讨论】:

  • 你可以使用time.Parse, golang.org/pkg/time/#Parse
  • now = time.Now().format(time.RFC3339) 不能是您的代码,它不会编译。但是在 time.Time 上调用Format 会产生一个string,它不是time.Time,也不是*time.Time。请参加 Go 之旅,了解 Go 的变量是有类型的以及它们是如何工作的。
  • 我已经知道是什么问题了,我正在这里寻找解决方案。我需要一个 RFC3339 格式的 time.Time 类型的变量。
  • time.Time 类型的变量没有任何格式;格式仅在 stringtime.Time 之间转换时才相关。如果您需要将当前时间作为time.Time,只需使用now := time.Now()
  • "我需要 RFC3339 格式的 time.Time 类型的变量。" time.Time 的变量不能采用 RFC3339 格式,因为 RFC3339 定义了一个字符串。

标签: go time type-conversion


【解决方案1】:

我同意 Sheshnath 的观点。看来您需要使用time.Parse https://golang.org/pkg/time/#Parse

由于您已经指定了格式time.RFC3339,在您使用time.Now() 时,您应该可以这样做

t, _ := time.Parse(time.RFC3339, now)
message.LastReadAt = t

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 2017-01-19
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 2014-02-27
    相关资源
    最近更新 更多