![在 Ansible 中将日期从 DD-MM-YYYY 重新格式化为 YYYY-MM-DD](https://linux22.com/image/192460/%E5%9C%A8%20Ansible%20%E4%B8%AD%E5%B0%86%E6%97%A5%E6%9C%9F%E4%BB%8E%20DD-MM-YYYY%20%E9%87%8D%E6%96%B0%E6%A0%BC%E5%BC%8F%E5%8C%96%E4%B8%BA%20YYYY-MM-DD.png)
假设我有这个字符串22-12-2021
。
我希望它与 Ansible 一起使用2021-12-22
。
知道是否有办法做到这一点?
答案1
如何在 Ansible 中操作字符串有很多选项,例如
- set_fact:
d2: "{{ _a.2 }}-{{ _a.1 }}-{{ _a.0 }}"
vars:
d1: 22-12-2021
_a: "{{ d1.split('-') }}"
给出
d2: '2021-12-22'
这是一个很好的单行(信用@Sijaan Hallak),它给出了相同的结果
- set_fact:
d2: "{{ d1.split('-')[::-1]|join('-') }}"
vars:
d1: 22-12-2021
下一个选项是处理日期和时间函数,例如创建日期对象
set_fact:
d2: "{{ d1|to_datetime('%d-%m-%Y') }}"
vars:
d1: 22-12-2021
给出
d2: '2021-12-22 00:00:00'
并使用时间过滤器以格式化字符串,例如
set_fact:
d2: "{{ (d1|to_datetime('%d-%m-%Y')).strftime('%Y-%m-%d') }}"
给出
d2: '2021-12-22'