是否有将日期字符串转换为纪元的 ansible 函数

vsh*_*ara 3 jinja2 ansible

我希望将日期输入变量转换为纪元。没有看到 ansible 功能来帮助我解决这个问题

例如:日期是一个格式变量:%m/%d/%Y %H:%M:%S,这需要转换为纪元秒。

lar*_*sks 7

Ansible 有一个to_datetime过滤器,记录在这里。该页面包括以下示例:

# Get total amount of seconds between two dates. Default date format is %Y-%m-%d %H:%M:%S but you can pass your own format
{{ (("2016-08-14 20:00:12" | to_datetime) - ("2015-12-25" | to_datetime('%Y-%m-%d'))).total_seconds()  }}

# Get remaining seconds after delta has been calculated. NOTE: This does NOT convert years, days, hours, etc to seconds. For that, use total_seconds()
{{ (("2016-08-14 20:00:12" | to_datetime) - ("2016-08-14 18:00:00" | to_datetime)).seconds  }}
# This expression evaluates to "12" and not "132". Delta is 2 hours, 12 seconds

# get amount of days between two dates. This returns only number of days and discards remaining hours, minutes, and seconds
{{ (("2016-08-14 20:00:12" | to_datetime) - ("2015-12-25" | to_datetime('%Y-%m-%d'))).days  }}
Run Code Online (Sandbox Code Playgroud)

使用此过滤器,您可以将日期到字符串转换为 unix 纪元时间,如下所示:

- debug:
    msg: "{{ ('2019-05-06 15:50:00'|to_datetime).strftime('%s') }}"
Run Code Online (Sandbox Code Playgroud)

这将输出:

TASK [debug] **********************************************************************************
ok: [localhost] => {
    "msg": "1557172200"
}
Run Code Online (Sandbox Code Playgroud)