【Python】時間を扱う型

この記事では、Pythonを使って日付や時刻を操作する方法について解説します。

具体的には、datetimeモジュールやtimeモジュール、calendarモジュールの使い方や日付時刻の取得、計算方法、フォーマット、比較、タイムゾーンの扱いについて紹介します。

Pythonで時間を柔軟に扱いたい初心者の方に役立つ内容です。

目次から探す

Pythonにおける時間の表現方法

Pythonでは、時間を扱うための便利なモジュールがいくつか提供されています。

主なモジュールとしては、datetimeモジュール、timeモジュール、calendarモジュールがあります。

それぞれのモジュールについて見ていきましょう。

datetimeモジュール

datetimeモジュールは、日付と時刻を操作するためのクラスや関数が提供されています。

以下は、datetimeモジュールを使用して現在の日付と時刻を取得するサンプルコードです。

import datetime

now = datetime.datetime.now()
print(now)
2024-02-14 06:20:00.749987

このコードを実行すると、現在の日付と時刻が表示されます。

datetimeモジュールには、日付や時刻の加算、減算などさまざまな操作が可能です。

timeモジュール

timeモジュールは、時間に関する関数が提供されています。

以下は、timeモジュールを使用して現在の時刻を取得するサンプルコードです。

import time

now = time.time()
print(now)
1707859195.3477066

このコードを実行すると、現在の時刻がエポックからの秒数で表示されます。

timeモジュールには、時間の待機や処理時間の計測などに利用できる関数が含まれています。

calendarモジュール

calendarモジュールは、カレンダー関連の機能が提供されています。

以下は、calendarモジュールを使用して2022年のカレンダーを表示するサンプルコードです。

import calendar

cal = calendar.TextCalendar(calendar.SUNDAY)
cal.pryear(2022)
                                  2022

      January                   February                   March
Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa
                   1             1  2  3  4  5             1  2  3  4  5
 2  3  4  5  6  7  8       6  7  8  9 10 11 12       6  7  8  9 10 11 12
 9 10 11 12 13 14 15      13 14 15 16 17 18 19      13 14 15 16 17 18 19
16 17 18 19 20 21 22      20 21 22 23 24 25 26      20 21 22 23 24 25 26
23 24 25 26 27 28 29      27 28                     27 28 29 30 31
30 31

       April                      May                       June
Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa
                1  2       1  2  3  4  5  6  7                1  2  3  4
 3  4  5  6  7  8  9       8  9 10 11 12 13 14       5  6  7  8  9 10 11
10 11 12 13 14 15 16      15 16 17 18 19 20 21      12 13 14 15 16 17 18
17 18 19 20 21 22 23      22 23 24 25 26 27 28      19 20 21 22 23 24 25
24 25 26 27 28 29 30      29 30 31                  26 27 28 29 30

        July                     August                  September
Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa
                1  2          1  2  3  4  5  6                   1  2  3
 3  4  5  6  7  8  9       7  8  9 10 11 12 13       4  5  6  7  8  9 10
10 11 12 13 14 15 16      14 15 16 17 18 19 20      11 12 13 14 15 16 17
17 18 19 20 21 22 23      21 22 23 24 25 26 27      18 19 20 21 22 23 24
24 25 26 27 28 29 30      28 29 30 31               25 26 27 28 29 30
31

      October                   November                  December
Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa      Su Mo Tu We Th Fr Sa
                   1             1  2  3  4  5                   1  2  3
 2  3  4  5  6  7  8       6  7  8  9 10 11 12       4  5  6  7  8  9 10
 9 10 11 12 13 14 15      13 14 15 16 17 18 19      11 12 13 14 15 16 17
16 17 18 19 20 21 22      20 21 22 23 24 25 26      18 19 20 21 22 23 24
23 24 25 26 27 28 29      27 28 29 30               25 26 27 28 29 30 31
30 31

このコードを実行すると、2022年のカレンダーが日曜日始まりで表示されます。

calendarモジュールには、月の日数や曜日の取得、週の開始曜日の設定などが可能です。

これらのモジュールを使うことで、Pythonで時間を柔軟に扱うことができます。

日付と時刻の操作方法

日付の取得

Pythonのdatetimeモジュールを使用すると、現在の日付を取得することができます。

以下のサンプルコードを実行すると、現在の日付が表示されます。

from datetime import datetime

today = datetime.today()
print("現在の日付:", today)
現在の日付: 2024-02-14 06:19:16.510816

時刻の取得

同様に、現在の時刻を取得することも可能です。

以下のサンプルコードを実行すると、現在の時刻が表示されます。

from datetime import datetime

now = datetime.now()
print("現在の時刻:", now)
現在の時刻: 2024-02-14 06:19:10.415808

日付と時刻の計算

日付や時刻の計算も簡単に行うことができます。

例えば、特定の日数を加算したり、差分を計算したりすることができます。

以下は、日付の計算のサンプルコードです。

from datetime import datetime, timedelta

today = datetime.today()
print("今日の日付:", today)

# 1週間後の日付を計算
one_week_later = today + timedelta(weeks=1)
print("1週間後の日付:", one_week_later)
今日の日付: 2024-02-14 06:19:05.999598
1週間後の日付: 2024-02-21 06:19:05.999598

日付や時刻の操作はPythonのdatetimeモジュールを使うことで柔軟に行うことができます。

時間のフォーマット

時間のフォーマットは、日付や時刻を特定の形式で表示することを指します。

Pythonでは、strftimeメソッドとstrptimeメソッドを使用して時間のフォーマットを行います。

strftimeメソッド

strftimeメソッドは、日付や時刻を指定したフォーマットに変換する際に使用されます。

以下は、strftimeメソッドを使用して現在の日付と時刻を特定のフォーマットで表示する例です。

import datetime

now = datetime.datetime.now()
formatted_date = now.strftime("%Y-%m-%d")
formatted_time = now.strftime("%H:%M:%S")

print("Formatted Date:", formatted_date)
print("Formatted Time:", formatted_time)
Formatted Date: 2024-02-14
Formatted Time: 06:18:59

上記のコードでは、strftimeメソッドに引数としてフォーマット指定子を渡しています。

%Yは年、%mは月、%dは日、%Hは時、%Mは分、%Sは秒を表します。

strptimeメソッド

strptimeメソッドは、文字列を日付や時刻に変換する際に使用されます。

以下は、strptimeメソッドを使用して文字列を日付に変換する例です。

import datetime

date_str = "2022-12-31"
date_obj = datetime.datetime.strptime(date_str, "%Y-%m-%d")

print("Date Object:", date_obj)
Date Object: 2022-12-31 00:00:00

上記のコードでは、strptimeメソッドに変換したい文字列とフォーマット指定子を渡しています。

文字列から日付オブジェクトが生成され、それをdate_objに代入しています。

時間のフォーマットにはさまざまな指定子があり、必要に応じて適切なフォーマットを選択して使用することが重要です。

Pythonの時間のフォーマット機能を活用して、日付や時刻を柔軟に扱うことができます。

時間の比較

Pythonを使って時間の比較を行う際には、比較演算子を使用します。

datetimeモジュールを使って作成した日時オブジェクト同士を比較することができます。

例えば、以下のように2つの日時オブジェクトを作成し、比較を行うことができます。

from datetime import datetime

# 日時オブジェクトの作成
date1 = datetime(2022, 5, 15, 12, 30, 0)
date2 = datetime(2022, 5, 20, 10, 0, 0)

# 比較演算子を使って比較
if date1 < date2:
    print("date1はdate2よりも前の日時です")
elif date1 == date2:
    print("date1とdate2は同じ日時です")
else:
    print("date1はdate2よりも後の日時です")
date1はdate2よりも前の日時です

上記のコードでは、date1とdate2を比較して、それぞれが前後どちらかを判定しています。

比較演算子(<, >, ==)を使って、日時の大小や等しさを判定することができます。

時間の比較を行う際には、日時オブジェクト同士を比較することで、より柔軟に条件分岐を行うことができます。

タイムゾーンの扱い

Pythonにおいて、タイムゾーンを扱うためにはpytzモジュールを使用することが一般的です。

まずはpytzモジュールをインストールします。

pip install pytz

次に、タイムゾーンを指定して日時を取得する方法を見ていきましょう。

import pytz
from datetime import datetime

# UTCのタイムゾーンを指定
utc = pytz.utc

# JST (日本時間) のタイムゾーンを取得
jst = pytz.timezone('Asia/Tokyo')

# 現在の日時をUTCとJSTで表示
now = datetime.now()
print("現在の日時 (UTC):", now.astimezone(utc))
print("現在の日時 (JST):", now.astimezone(jst))
現在の日時 (UTC): 2024-02-13 21:18:42.938583+00:00
現在の日時 (JST): 2024-02-14 06:18:42.938583+09:00

上記のコードでは、pytzモジュールを使用してUTCとJSTのタイムゾーンを定義し、現在の日時をそれぞれのタイムゾーンで表示しています。

また、特定の日時を特定のタイムゾーンに変換する方法もあります。

以下は、特定の日時をUTCからJSTに変換する例です。

import pytz
from datetime import datetime

# UTCのタイムゾーンを指定
utc = pytz.utc

# JST (日本時間) のタイムゾーンを取得
jst = pytz.timezone('Asia/Tokyo')

# 特定の日時を作成
specific_time = datetime(2023, 5, 15, 12, 30, tzinfo=utc)

# UTCからJSTに変換して表示
converted_time = specific_time.astimezone(jst)
print("特定の日時 (UTC):", specific_time)
print("特定の日時 (JST):", converted_time)
特定の日時 (UTC): 2023-05-15 12:30:00+00:00
特定の日時 (JST): 2023-05-15 21:30:00+09:00

このように、pytzモジュールを使用することで、Pythonでタイムゾーンを扱うことができます。

タイムゾーンを考慮した日時の取得や変換を行う際には、適切なタイムゾーンを指定して操作することが重要です。

目次から探す