Python
 Computer >> コンピューター >  >> プログラミング >> Python

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オブジェクトとして扱えるようになります。

  1. 【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

  2. 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