ansible.builtin.strftime filter – date formating

Note

This filter plugin is part of ansible-core and included in all Ansible installations. In most cases, you can use the short plugin name strftime. However, we recommend you use the Fully Qualified Collection Name (FQCN) ansible.builtin.strftime for easy linking to the plugin documentation and to avoid conflicting with other collections that may have the same filter plugin name.

Synopsis

  • Using Python’s strftime function, take a data formating string and a date/time to create a formated date.

Input

This describes the input of the filter, the value before | ansible.builtin.strftime.

Parameter

Comments

Input

string / required

A formating string following stftime conventions.

See the Python documentation for a reference.

Positional parameters

This describes positional parameters of the filter. These are the values positional1, positional2 and so on in the following example: input | ansible.builtin.strftime(positional1, positional2, ...)

Parameter

Comments

second

integer

Datetime in seconds from epoch to format, if not supplied gmttime/localtime will be used.

utc

boolean

Whether time supplied is in UTC.

Choices:

  • false ← (default)

  • true

Notes

Note

  • This is a passthrough to Python’s stftime, for a complete set of formatting options go to https://strftime.org/.

Examples

# for a complete set of features go to  https://strftime.org/

# Display year-month-day
{{ '%Y-%m-%d' | strftime }}
# => "2021-03-19"

# Display hour:min:sec
{{ '%H:%M:%S' | strftime }}
# => "21:51:04"

# Use ansible_date_time.epoch fact
{{ '%Y-%m-%d %H:%M:%S' | strftime(ansible_date_time.epoch) }}
# => "2021-03-19 21:54:09"

# Use arbitrary epoch value
{{ '%Y-%m-%d' | strftime(0) }}          # => 1970-01-01
{{ '%Y-%m-%d' | strftime(1441357287) }} # => 2015-09-04

# complex examples
vars:
  date1: '2022-11-15T03:23:13.686956868Z'
  date2: '2021-12-15T16:06:24.400087Z'
  date_short: '{{ date1|regex_replace("([^.]+)(\.\d{6})(\d*)(.+)", "\1\2\4") }}' #shorten microseconds
  iso8601format: '%Y-%m-%dT%H:%M:%S.%fZ'
  date_diff_isoed: '{{ (date1|to_datetime(isoformat) - date2|to_datetime(isoformat)).total_seconds() }}'

Return Value

Key

Description

Return value

string

A formatted date/time string.

Returned: success

Hint

Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up.