Pythonで日付をJSON形式(ISO 8601)に変換する方法を解説
実は、日付に対する標準的なJSON形式は存在しません。ただし、JavaScriptには標準の日付形式があり、人間が読み取りやすく、文字列として正しくソートでき、小数秒(ミリ秒以下の精度で時系列を復元するのに役立ちます)を含み、さらにISO 8601規格に準拠しているという特徴があります。
Pythonの日付をこのJavaScriptの日付形式に変換するには、strftime関数を使用します。その後、この日付を必要とするクライアント側でデシリアライズ(解析)すればよいのです。
なお、Python 3でISO 8601形式の日付文字列を取得したい場合は、isoformat関数を使うだけで実現できます。この関数は日付をISO 8601形式で返します。例えば、2017年12月31日の日付を渡すと、'2017-12-31T00:00:00'という文字列が返されます。以下のように使用できます。
サンプルコード
from datetime import datetime my_date = datetime.now() print(my_date.isoformat())
出力結果
上記のコードを実行すると、次のような出力が得られます。
2018-01-02T22:08:12.510696
古いバージョンのPythonでは、strftime関数を使ってdatetimeオブジェクトをフォーマットすることで、同様の形式の結果を得ることができます。
サンプルコード
from datetime import datetime
my_date = datetime.now()
print(my_date.strftime('%Y-%m-%dT%H:%M:%S.%f%z'))出力結果
上記のコードを実行すると、次のような出力が得られます。
2018-01-02T22:10:05.284208
主な書式指定子の意味
- %Y:西暦年(4桁)
- %m:月(2桁)
- %d:日(2桁)
- %H:時(24時間表記)
- %M:分
- %S:秒
- %f:マイクロ秒
- %z:UTCオフセット(タイムゾーン情報)
補足として、Pythonの標準ライブラリであるjson.dumps()はdatetimeオブジェクトを直接シリアライズできないため、JSONに含めたい場合は、上記のようにあらかじめisoformat()やstrftime()で文字列へ変換しておく必要があります。これにより、JavaScript側でもnew Date(文字列)で簡単にDateオブジェクトとして扱えるようになります。
-
【JavaScript】MySQLのDATETIME値をJSON形式に変換する方法を解説
MySQL DATETIME値をJSON形式に変換する基本手法MySQLのDATETIME値をJavaScriptでJSON形式に変換するには、JSON.stringify()メソッドを使用します。手順としては、まずDateオブジェクトとして日時を取得し、年・月・日・時・分・秒をそれぞれ取り出してオブジェクトにまとめ、最後にJSON文字列へ変換します。サンプルコード以下は、MySQLのDATETIME値をJSON形式に変換するJavaScriptのコード例です。<script>var mySQLDateTime = new Date(Fri Sep 06 2019 22:54:48
-
Pythonで文字列から日付を抽出・解析する方法
文字列から日付を抽出するには、まずその文字列内で日付がどのような形式(フォーマット)で表現されているかを把握しておく必要があります。基本的なアプローチとしては、正規表現(reモジュール)で日付部分を取り出し、datetime.datetime.strptime() で解析(パース)するという流れになります。例えば、文字列中に「YYYY-MM-DD」形式の日付が含まれている場合、以下のコードで抽出と解析ができます。コード例import re import datetime s = I have a meeting on 2018-12-10 in New York match = re.sea