代码之家  ›  专栏  ›  技术社区  ›  dsaydon

Ansible:比较最后一个小时两个日期之间的差异

  •  6
  • dsaydon  · 技术社区  · 7 年前

    有一种方法可以比较 当前时间 使用 ansible_date_time 还有另一个日期(aws ec2发布时间),所以我可以知道它是否发生在最后一个小时?

    我有以下变量 ec2_launch_time: 2018-01-04T15:57:52+00:00

    我知道我可以比较 使用以下方法(从 here here ):

    "{{ (ansible_date_time.iso8601[:19] | to_datetime('%Y-%m-%dT%H:%M:%S') - ec2_launch_time[:19] | to_datetime('%Y-%m-%dT%H:%M:%S')).days }}"
    

    如果我能 0 我会知道这是在同一天发生的,但如果日期之间的差异是 1小时(当天) .

    有一个过滤器可以用来编写这个或只使用shell(如 this )?

    1 回复  |  直到 7 年前
        1
  •  8
  •   techraf    7 年前

    减去两个日期,你会得到一个 timedelta Python object .

    您可以使用 total_seconds method 以获得秒的精确差异。添加一些基本算法以获得完整小时数:

    ---
    - hosts: localhost
      gather_facts: no
      connection: local
      vars:
        date_later: 2018-01-05 08:30:00
        date_earlier: 2018-01-05 06:50:00
      tasks:
        - debug:
            msg: "{{ ( (date_later - date_earlier).total_seconds() / 3600 ) | int }}"
    

    返回值:

    ok: [localhost] => {
        "msg": "1"
    }
    

    在所需的条件下使用上述表达式。