在 Ansible 中将日期从 DD-MM-YYYY 重新格式化为 YYYY-MM-DD

在 Ansible 中将日期从 DD-MM-YYYY 重新格式化为 YYYY-MM-DD

假设我有这个字符串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'

相关内容