我正在获取用户输入“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)
1条答案
按热度按时间yzuktlbb1#
问题是布局字符串与输入不匹配。
如果将自定义格式字符串指定为
"2006-01-02 15:04:05 -0700 MST"
,则输入必须与之完全匹配,不能只忽略时间戳的时间部分。请注意,错误消息是说它正在您的布局中查找
"15"
部件,但无法找到它(cannot parse ""
),因为那里什么也没有。如果您只想解析日期,可以尝试:
它将返回以下时间戳
协调世界时2023年9月2日00:00:00 +0000
如果没有任何明确规定的时区,它将始终默认为UTC。