gpt4 book ai didi

bash - 以 bash 友好的方式格式化 Go 日期

转载 作者:IT王子 更新时间:2023-10-29 02:01:04 25 4
gpt4 key购买 nike

使用 buildah ,我可以通过这个调用找出我的图像的构建日期:

buildah images --format '{{.CreatedAt}}' my_image

--format 参数是一个 Go 模板,如 described for a related command .

返回:

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 方法。如果没有自定义注册函数,您也不能对其进行任何有用的日期/时间处理。但由于您只是提供模板文本,因此您也无法注册自定义函数。

您传递的模板在函数 outputUsingTemplate() 中执行,如下所示:

err = tmpl.Execute(os.Stdout, params)

其中 params 是上述结构的值。

建议项目所有者添加一个新字段,将 CreatedAt 时间戳作为 time.Time 值,这样您就可以使用 Time.Unix() 获取纪元秒.模板看起来像这样:

{{.CreatedAtTime.Unix}}

关于bash - 以 bash 友好的方式格式化 Go 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54071278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com