以 bash 友好的方式格式化 Go 日期
Formatting a Go date in a bash-friendly manner
使用 buildah
,我可以通过此调用找到我的映像的构建日期:
buildah images --format '{{.CreatedAt}}' my_image
--format
参数是一个 Go 模板,如 described for a related command。
这个returns:
Nov 13, 2018 08:04
据我所知,这是我当前使用的时区,但它没有本地化,并且缺少时区信息。如果我像这样将输出输入 Linux 的 date
:
date -d "`buildah images --format '{{.CreatedAt}}' my_container`" +%s
这给了我想要的,UNIX 纪元秒:
1542063840
然而,由于我的 '{{.CreatedAt}}'
是一个 Go 模板,我应该能够格式化,我如何直接打印出纪元秒(或 RFC-3339
等)而不是依赖 date
.
如您所料,我是一个彻头彻尾的 Go 新手,文档没有提供任何我可以复制粘贴的内容
注意:按照下面的回答,增强请求发布到buildah
issues db。
不幸的是你运气不好。
传给模板执行的参数值是imageOutputParams
类型,声明在images.go
:
type imageOutputParams struct {
Tag string
ID string
Name string
Digest string
CreatedAt string
Size string
}
如您所见,CreatedAt
字段的类型为 string
,而不是 time.Time
,因此您不能对其调用 time.Time
方法。如果没有自定义注册函数,您也不能对其进行任何有用的 date/time 处理。但由于您只是提供模板文本,因此您也无法注册自定义函数。
您传递的模板在函数 outputUsingTemplate()
中执行,如下所示:
err = tmpl.Execute(os.Stdout, params)
其中 params
是上述结构的值。
建议项目所有者添加一个新字段,将 CreatedAt
时间戳作为 time.Time
值,这样您就可以使用 Time.Unix()
获取纪元秒。模板将如下所示:
{{.CreatedAtTime.Unix}}
使用 buildah
,我可以通过此调用找到我的映像的构建日期:
buildah images --format '{{.CreatedAt}}' my_image
--format
参数是一个 Go 模板,如 described for a related command。
这个returns:
Nov 13, 2018 08:04
据我所知,这是我当前使用的时区,但它没有本地化,并且缺少时区信息。如果我像这样将输出输入 Linux 的 date
:
date -d "`buildah images --format '{{.CreatedAt}}' my_container`" +%s
这给了我想要的,UNIX 纪元秒:
1542063840
然而,由于我的 '{{.CreatedAt}}'
是一个 Go 模板,我应该能够格式化,我如何直接打印出纪元秒(或 RFC-3339
等)而不是依赖 date
.
如您所料,我是一个彻头彻尾的 Go 新手,文档没有提供任何我可以复制粘贴的内容
注意:按照下面的回答,增强请求发布到buildah
issues db。
不幸的是你运气不好。
传给模板执行的参数值是imageOutputParams
类型,声明在images.go
:
type imageOutputParams struct {
Tag string
ID string
Name string
Digest string
CreatedAt string
Size string
}
如您所见,CreatedAt
字段的类型为 string
,而不是 time.Time
,因此您不能对其调用 time.Time
方法。如果没有自定义注册函数,您也不能对其进行任何有用的 date/time 处理。但由于您只是提供模板文本,因此您也无法注册自定义函数。
您传递的模板在函数 outputUsingTemplate()
中执行,如下所示:
err = tmpl.Execute(os.Stdout, params)
其中 params
是上述结构的值。
建议项目所有者添加一个新字段,将 CreatedAt
时间戳作为 time.Time
值,这样您就可以使用 Time.Unix()
获取纪元秒。模板将如下所示:
{{.CreatedAtTime.Unix}}