はじめに
1609948923
のような UNIX タイムスタンプを、2021/01/07 01:02:03
のようなフォーマットに変換する方法です。
これをやりたい機会があって調べてたのですが、思いの外目当ての情報ににたどり着けず・・。 結局ちゃんと公式ドキュメントに書いてありました。公式ドキュメントへの橋渡しを兼ねて記事にします。
- 環境
- Ansible 2.9.14
- Jinja2 2.11.2
Playbook
strftime
を利用します。
--- - hosts: localhost gather_facts: false tasks: - name: debug datetime format debug: msg: "{{ '%Y/%m/%d %H:%M:%S' | strftime(1609948923) }}"
利用できるフォーマットは、以下の Python のドキュメントに掲載されています。
time — Time access and conversions — Python 3.9.1 documentation
実行
Playbook を実行します。
$ ansible-playbook -i localhost, ts.yml PLAY [localhost] ************************************************************************************************** TASK [debug datetime format] ************************************************************************************** ok: [localhost] => { "msg": "2021/01/07 01:02:03" } PLAY RECAP ******************************************************************************************************** localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
"2021/01/07 01:02:03"
と表示されました。
参考
公式ドキュメントはこちら。
以下のサンプルが掲載されています。
# Use arbitrary epoch value {{ '%Y-%m-%d' | strftime(0) }} # => 1970-01-01 {{ '%Y-%m-%d' | strftime(1441357287) }} # => 2015-09-04