Pythonの datetime モジュール: 基本と便利な使い方ガイド

Pythonで日付や時間を操作する際に非常に便利な datetime モジュールについて、基本的な使い方から応用的なテクニックまでを備忘録としてまとめました。

datetime モジュールの基本

datetime モジュールは、日付や時間の操作を簡単にするための標準ライブラリです。このモジュールを使うことで、日付や時間の計算、フォーマット変換、タイムゾーンの操作などが簡単に行えます。

import datetime

1. 現在の日付と時刻の取得

現在の日付と時刻を取得するには、datetime.now() を使用します。

now = datetime.datetime.now()
print(now)

2. 特定の日付や時刻を作成する

特定の日付や時刻を作成するには、datetime クラスのコンストラクタを使用します。

specific_date = datetime.datetime(2024, 8, 13, 15, 30)
print(specific_date)

3. 日付や時刻の計算

timedelta クラスを使うことで、日付や時刻の計算が可能です。例えば、1週間後の日付を計算するには次のようにします。

one_week_later = now + datetime.timedelta(weeks=1)
print(one_week_later)

逆に、1週間前の日付を計算することもできます。

one_week_ago = now - datetime.timedelta(weeks=1)
print(one_week_ago)

4. 日付や時刻のフォーマット変換

strftime メソッドを使用して、日付や時刻を指定したフォーマットで文字列に変換できます。

formatted_date = now.strftime('%Y-%m-%d %H:%M:%S')
print(formatted_date)

また、文字列を日付や時刻オブジェクトに変換するには、strptime メソッドを使用します。

date_str = '2024-08-13 15:30:00'
parsed_date = datetime.datetime.strptime(date_str, '%Y-%m-%d %H:%M:%S')
print(parsed_date)

5. 日付のみや時刻のみを取得する

datetime オブジェクトから日付や時刻のみを取得したい場合は、date()time() メソッドを使います。

current_date = now.date()
current_time = now.time()

print(current_date)
print(current_time)

6. タイムゾーンの操作

datetime モジュールでは、タイムゾーン情報を扱うために timezone クラスがあります。例えば、UTC時間に変換するには以下のようにします。

import pytz

utc = pytz.UTC
now_utc = now.astimezone(utc)
print(now_utc)

7. よく使うタイムゾーンのリスト

以下は、よく使うタイムゾーンの例です。

tokyo = pytz.timezone('Asia/Tokyo')
new_york = pytz.timezone('America/New_York')
london = pytz.timezone('Europe/London')

これらを使用して、特定のタイムゾーンの時間を取得することができます。

now_in_tokyo = now.astimezone(tokyo)
print(now_in_tokyo)

応用: 日付の範囲を生成する

例えば、ある期間内の日付をリストにして取得したい場合、以下のようにループを使って簡単に行うことができます。

start_date = datetime.date(2024, 8, 1)
end_date = datetime.date(2024, 8, 10)

date_list = [start_date + datetime.timedelta(days=x) for x in range((end_date - start_date).days + 1)]
print(date_list)

まとめ

datetime モジュールは、Pythonで日付や時刻を操作する際に欠かせない強力なツールです。この記事では、基本的な使い方からタイムゾーンの扱い方まで、知っておくと便利なテクニックを紹介しました。これらを使いこなすことで、日付や時刻に関する操作が格段に効率よくなります。


これで datetime モジュールを使いこなせるようになれば、Pythonでの開発がさらにスムーズになるでしょう。

コメント

タイトルとURLをコピーしました