Go语言 kubectl错误--since-time标志无法识别日期时间格式

pxiryf3j  于 2023-02-10  发布在  Go
关注(0)|答案(1)|浏览(226)

我正在获取用户输入“2023-09-02”(YYYY-DD-MM),并将其转换为官方docs中指定的日期时间格式(RFC 3339):
--开始时间="":仅返回特定日期之后的日志(RFC 3339)
以下是负责转换的部分:

date, err := time.Parse(time.RFC3339, "2023-09-02")
if err != nil {
    log.Fatal(err)
}
since = date.String()

我得到错误是:
解析时间“2023年9月2日”为“2006年1月2日15:04:05 Z 07:00”:无法将“”解析为“T”
我根据this文章更改了格式,并将代码更改为:

date, err := time.Parse("2006-01-02 15:04:05 -0700 MST", "2023-09-02")

我现在得到错误是:
解析时间“2023年9月2日”为“2006年1月2日15:04:05 - 0700 MST”:无法将“”解析为“15”
我知道它试图解析小时的“15”,但没有提供小时。有没有办法默认为当天的午夜?

编辑:更改为后:

d, err := time.Parse("2006-01-02", since)
if err != nil {
    log.Fatal(err)
}
sinceTime = d.Format(time.RFC3339)

自时间= 2023年9月2日00:00:00 Z
但是当我在kubectl中使用该月份时,命令冻结$ kubectl logs -n <NAME_SPACE> --container=<CONTAINER> -f --timestamps=true --since-time=2023-09-02T00:00:00Z --tail 500 -l app=<APP>

固定d, err := time.Parse("2006-02-01", since)

yzuktlbb

yzuktlbb1#

问题是布局字符串与输入不匹配。
如果将自定义格式字符串指定为"2006-01-02 15:04:05 -0700 MST",则输入必须与之完全匹配,不能只忽略时间戳的时间部分。
请注意,错误消息是说它正在您的布局中查找"15"部件,但无法找到它(cannot parse ""),因为那里什么也没有。
如果您只想解析日期,可以尝试:

t, err := time.Parse("2006-01-02", "2023-09-02")

它将返回以下时间戳
协调世界时2023年9月2日00:00:00 +0000
如果没有任何明确规定的时区,它将始终默认为UTC。

相关问题