2

为了20201008在 Argo 中获得日期,在模板中格式化日期的最佳方法是什么?

这似乎可行,但相当冗长,并且为类似的东西创建字符串对于其他"%Y-%m-%dT%H:%M:%SZ"人来说将变得非常难以阅读。

 "{{workflow.creationTimestamp.Y}}{{workflow.creationTimestamp.m}}{{workflow.creationTimestamp.d}}"

我认为这些是相关文档:https ://github.com/argoproj/argo/blob/master/docs/variables.md 。我试过"{{workflow.creationTimestamp.Ymd}}"但没有运气。

4

2 回答 2

1

不幸的是,没有办法(在模板内部)使它更简洁。

有一个支持的时间格式字符的硬编码列表对于该列表中的每个字符,将填充一个全局参数以及基本workflow.creationTimestamp变量。之后的字符没有动态读取或处理workflow.creationTimestamp.

由于模板基于 Jinja2,因此已经讨论了更强大的字符串模板支持。但各种复杂情况阻碍了这一讨论。(Argo 团队使用“赞许”计数来确定问题的优先级,因此可能有助于解决该问题。)

我相信您已经想到了这一点,但为了完整起见:如果您在 pod 中使用变量,您可以发送完整的变量workflow.creationTimestamp并进行一些运行时操作以获得您想要的格式。

最后,您可以提交问题以请求该功能。即使他们决定不实现它,该示例也会使开发人员对 Jinja2 模板的讨论更加具体。

于 2020-10-12T13:53:47.533 回答
1

从 Argo 3.1 开始,支持一些模板,因此现在可以使用:

"{{=sprig.date('20060102', workflow.creationTimestamp)}}"
于 2021-12-18T02:18:25.627 回答