【问题标题】:Formatting time from "2020-05-21T23:22:14.45321Z" to "May 21, 2020" in Go [duplicate]Go中从“2020-05-21T23:22:14.45321Z”到“2020年5月21日”的格式化时间[重复]
【发布时间】:2021-04-30 22:48:00
【问题描述】:

我已尝试以所需格式获取时间,如下所示。下面的代码似乎不起作用。如果我使用 RFC3339 布局,情况也是如此。任何帮助表示赞赏。

stamp, err := time.Parse("2006-01-02T15:04:05.000000Z", "2020-05-21T23:22:14.45321Z")
log.Println(stamp.Format("September 01, 2020"))

【问题讨论】:

  • “似乎不起作用”不是问题陈述。什么不起作用?您是否收到错误或其他一些意外行为?
  • 我相信,仅从 2 条语句的意图就很清楚了,日期格式没有按预期工作。
  • 再一次:“没有按预期工作”不是问题陈述。什么不起作用?您是否收到错误或其他一些意外行为? 意图可能很清楚,但问题不是。

标签: go


【解决方案1】:

您需要遵循文档中提到的参考时间戳;否则,它将无法正常工作。阅读:https://golang.org/pkg/time/#pkg-constants

以下代码应该会有所帮助:

package main

import (
    "fmt"
    "os"
    "time"
)

func main() {
    // Parse the time of layout: RFC3339
    t, err := time.Parse(time.RFC3339, "2020-05-21T23:22:14.45321Z")
    if err != nil {
        panic(err)
    }
    // Reference for layout: Mon Jan 2 15:04:05 -0700 MST 2006
    // Format: Jan 02, 2006
    fmt.Fprintf(os.Stdout, "%s\n", t.Format("Jan 02, 2006"))
}

【讨论】:

  • 没有理由在那里fmt.Fprintf。只需使用fmt.Fprintln
  • 我知道。我更喜欢基于format specifier 进行格式化,即使它只是在末尾附加\n。保持我的代码一致,IMO。
  • 保持缓慢,而且过于冗长:)
猜你喜欢
  • 2020-12-22
  • 1970-01-01
  • 2020-10-08
  • 2022-07-20
  • 2021-01-20
  • 1970-01-01
  • 1970-01-01
  • 2020-09-18
  • 2020-09-30
相关资源
最近更新 更多