Pythonで日時データを文字列に変換する方法を解説します。
Pythonで日時データを文字列に変換するには、主に2つの方法があります。
それぞれ見ていきましょう。
1. isoformat()メソッドを使う
1つめはisoformat()
メソッドを使う方法です。
これは年-月-日T時:分:秒.マイクロ秒
のような書式で日時を表現します。
例として、datetime
のnow()
メソッドで取得した現在日時(datetime
型のオブジェクト)を、isoformat()
メソッドで変換してみましょう。
>>> from datetime import datetime >>> # 現在日時を取得 >>> dt = datetime.now() >>> dt datetime.datetime(2022, 7, 4, 20, 24, 54, 746371) >>> # isoformat()で文字列に変換 >>> dt.isoformat() '2022-07-04T20:24:54.746371'
日時データ(dt
)が、年-月-日T時:分:秒.マイクロ秒
という書式の文字列になったことを確認できました。
なお、マイクロ秒が0
であれば、年-月-日T時:分:秒
になります。
>>> # マイクロ秒が「0」の日時データを作成 >>> dt = datetime(2022, 7, 4, 12, 34, 56) >>> dt datetime.datetime(2022, 7, 4, 12, 34, 56) >>> # isoformat()で文字列に変換 >>> dt.isoformat() '2022-07-04T12:34:56'
また、isoformat()
メソッドはdatetime
型のオブジェクトだけでなく、date
型やtime
型のオブジェクトでも使えます。
date
型のオブジェクトでisoformat()
を使用した場合、以下のように年-月-日
となります。
>>> from datetime import date >>> td = date.today() >>> td datetime.date(2022, 7, 4) >>> td.isoformat() '2022-07-04'
time
型のオブジェクトでisoformat()
を使用した場合、以下のように時-分-秒
となります(マイクロ秒が含まれる場合は時:分:秒.マイクロ秒
)。
>>> from datetime import time >>> t = time(12, 34, 56) >>> t.isoformat() '12:34:56'
なお、この書式は日付と時刻の表記に関する国際規格であるISO 8601に従っています。
日時をISO書式で表したい場合は、isoformat()
メソッドを使うとよいでしょう。
2. strftime()メソッドを使う
2つめはstrftime()
メソッドを使う方法です。
こちらは書式指定子を使い、自分で日時の書式を指定できます。
たとえば、年/月/日 時:分:秒
という書式の文字列に変換したい場合、以下のようにします。
>>> dt = datetime(2022, 7, 4, 12, 34, 56) >>> # 「年/月/日 時:分:秒」という書式にする >>> dt.strftime("%Y/%m/%d %H:%M:%S") '2022/07/04 12:34:56'
%Y
や%m
などが書式指定子です。
よく使う書式指定子は以下のようなものがあります。
書式指定子 | 意味 | 使用例 |
---|---|---|
%Y | 西暦(4桁) | 0001, 0002, ..., 2022, 2023, ..., 9998, 9999 |
%y | 西暦(2桁) | 00, 01, ..., 99 |
%m | 月 | 01, 02, ..., 12 |
%B | 月名 | January, February, ..., December |
%b | 月名(短縮系) | Jan, Feb, ..., Dec |
%d | 日にち | 01, 02, ..., 31 |
%A | 曜日名 | Sunday, Monday, ..., Saturday |
%a | 曜日名(短縮系) | Sun, Mon, ..., Sat |
%H | 時(24時間表記) | 00, 01, ..., 23 |
%I | 時(12時間表記) | 01, 02, ..., 12 |
%p | AM/PM | AM, PM |
%M | 分 | 00, 01, ..., 59 |
%S | 秒 | 00, 01, ..., 59 |
%f | マイクロ秒 | 000000, 000001, ..., 999999 |
なお、strftime()
メソッドはdate
型やtime
型のオブジェクトでも使えます。
日時を表す書式を自分で指定したい場合は、strftime()
メソッドを使うとよいでしょう。
メソッド名の覚え方:strftime()
のf
とは
strftime()
と似た名前のメソッドに、strptime()
があります。
私はこの2つをなかなか区別できなったのですが、f
とp
の意味が分かったら簡単に覚えられました。
strftime()
のf
はformatのf
です。
「フォーマット(format)」は「書式」ということなので、strftime()
は日時データを指定した書式(format)で表すメソッドと覚えましょう。
strptime()
については別の記事で解説予定です。
3. まとめ
- 日時データを文字列に変換するには、
isoformat()
かstrftime()
を使う- 日時データ:
datetime
型、date
型、time
型のオブジェクト
- 日時データ:
- 日時をISO書式で表したい場合は、
isoformat()
メソッドを使う- ISO書式:
年-月-日T時:分:秒.マイクロ秒
など
- ISO書式:
- 日時を表す書式を自分で指定したい場合は、
strftime()
メソッドを使う