Python の日時 (Datetime)
1. Python の日時 (Datetime)
Python において、日付(Date)そのものは独自のデータ型として定義されていません。しかし、datetime という名前のモジュール(Module)をインポートすることで、日付をオブジェクト(Object)として扱うことが可能になります。
1.1 datetime モジュールのインポート
datetime モジュールをインポートして、現在の日時を表示する例です。
import datetime
# 現在の日時を取得
x = datetime.datetime.now()
print(x)2. 日時の出力 (Date Output)
上記のように日時を出力すると、年、月、日、時、分、秒、およびマイクロ秒が含まれた形で返されます。
datetime モジュールには、オブジェクトに関する情報を返すための多くのメソッドが用意されています。
2.1 特定の要素を抽出する例
「年」や「曜日」の名前を個別に取得するコードです。
import datetime
x = datetime.datetime.now()
# 年を表示
print(x.year)
# 曜日を表示(フルネーム)
print(x.strftime("%A"))3. 日時オブジェクトの作成
日付オブジェクトを作成するには、datetime モジュールの datetime() クラス(コンストラクタ)を使用します。
datetime() クラスは、日付を作成するために「年、月、日」の 3 つのパラメータを必要とします。
3.1 日時指定のインスタンス化
特定の日付を指定してオブジェクトを作成する例です。
import datetime
# 2020年5月17日のオブジェクトを作成
x = datetime.datetime(2020, 5, 17)
print(x)datetime() クラスは、時間とタイムゾーン(時、分、秒、マイクロ秒、tzone)のパラメータも受け取ることができますが、これらはオプションであり、デフォルト値は 0(タイムゾーンの場合は None)となっています。
4. strftime() メソッド
datetime オブジェクトには、日付オブジェクトを読み取り可能な文字列にフォーマット(整形)するためのメソッドが用意されています。それが strftime() メソッドです。
このメソッドは、返される文字列の形式を指定するための「フォーマット(Format)」という引数を一つ取ります。
4.1 strftime() の使用例
月の名前を表示する例です。
import datetime
x = datetime.datetime(2018, 6, 1)
# 月のフルネーム(June)を表示
print(x.strftime("%B"))4.2 主要なフォーマットコード一覧
以下は、実務で頻繁に使用されるフォーマットコードのリストです。
| ディレクティブ | 説明 | 例 |
|---|---|---|
| %a | 曜日(短縮形) | Wed |
| %A | 曜日(フルネーム) | Wednesday |
| %w | 曜日(数値、0-6、0は日曜日) | 3 |
| %d | 日(数値、01-31) | 31 |
| %b | 月(短縮形) | Dec |
| %B | 月(フルネーム) | December |
| %m | 月(数値、01-12) | 12 |
| %y | 年(短縮形、西暦の下2桁) | 18 |
| %Y | 年(フルネーム) | 2018 |
| %H | 時(24時間制、00-23) | 17 |
| %I | 時(12時間制、01-12) | 05 |
| %p | AM/PM | PM |
| %M | 分(00-59) | 41 |
| %S | 秒(00-59) | 08 |
| %f | マイクロ秒(000000-999999) | 548513 |
| %z | UTCオフセット | +0100 |
| %Z | タイムゾーン | CST |
| %j | 年間通算日(001-366) | 365 |
| %U | 年間通算週(日曜日開始、00-53) | 52 |
| %W | 年間通算週(月曜日開始、00-53) | 52 |
| %c | 日時(ロケールに応じた適切な形式) | Mon Dec 31 17:41:00 2018 |
| %C | 世紀 | 20 |
| %x | 日付(ロケールに応じた適切な形式) | 12/31/18 |
| %X | 時刻(ロケールに応じた適切な形式) | 17:41:00 |
| %% | 文字としての "%" | % |
| %G | ISO 8601 形式の年 | 2018 |
| %u | ISO 8601 形式の曜日(1-7) | 1 |
| %V | ISO 8601 形式の週番号(01-53) | 01 |