Added to_datetime filter (#17145)

* Added to_datetime filter

* Added to_datetime filter documentation
This commit is contained in:
Roman Belyakovsky 2016-09-01 03:51:03 +04:00 committed by Michael Scherer
parent 2ffb136b3f
commit d80d986a38
2 changed files with 14 additions and 3 deletions

View file

@ -412,7 +412,7 @@ Other Useful Filters
To add quotes for shell usage:: To add quotes for shell usage::
- shell: echo {{ string_value | quote }} - shell: echo {{ string_value | quote }}
To use one value on true and another on false (new in version 1.9):: To use one value on true and another on false (new in version 1.9)::
@ -510,6 +510,11 @@ To make use of one attribute from each item in a list of complex variables, use
# get a comma-separated list of the mount points (e.g. "/,/mnt/stuff") on a host # get a comma-separated list of the mount points (e.g. "/,/mnt/stuff") on a host
{{ ansible_mounts|map(attribute='mount')|join(',') }} {{ ansible_mounts|map(attribute='mount')|join(',') }}
To get date object from string use the `to_datetime` filter, (new in version in 2.2):
# get amount of seconds between two dates, default date format is %Y-%d-%m %H:%M:%S but you can pass your own one
{{ (("2016-08-04 20:00:12"|to_datetime) - ("2015-10-06"|to_datetime('%Y-%d-%m'))).seconds }}
A few useful filters are typically added with each new Ansible release. The development documentation shows A few useful filters are typically added with each new Ansible release. The development documentation shows
how to extend Ansible filters by writing your own as plugins, though in general, we encourage new ones how to extend Ansible filters by writing your own as plugins, though in general, we encourage new ones
to be added to core so everyone can make use of them. to be added to core so everyone can make use of them.
@ -536,5 +541,3 @@ to be added to core so everyone can make use of them.
Have a question? Stop by the google group! Have a question? Stop by the google group!
`irc.freenode.net <http://irc.freenode.net>`_ `irc.freenode.net <http://irc.freenode.net>`_
#ansible IRC chat channel #ansible IRC chat channel

View file

@ -34,6 +34,7 @@ import hashlib
import string import string
from functools import partial from functools import partial
from random import SystemRandom, shuffle from random import SystemRandom, shuffle
from datetime import datetime
import uuid import uuid
import yaml import yaml
@ -116,6 +117,10 @@ def to_bool(a):
else: else:
return False return False
def to_datetime(string, format="%Y-%d-%m %H:%M:%S"):
return datetime.strptime(string, format)
def quote(a): def quote(a):
''' return its argument quoted for shell usage ''' ''' return its argument quoted for shell usage '''
return pipes.quote(a) return pipes.quote(a)
@ -393,6 +398,9 @@ class FilterModule(object):
'to_nice_yaml': to_nice_yaml, 'to_nice_yaml': to_nice_yaml,
'from_yaml': yaml.safe_load, 'from_yaml': yaml.safe_load,
#date
'to_datetime': to_datetime,
# path # path
'basename': partial(unicode_wrap, os.path.basename), 'basename': partial(unicode_wrap, os.path.basename),
'dirname': partial(unicode_wrap, os.path.dirname), 'dirname': partial(unicode_wrap, os.path.dirname),