Pythonで日付と時刻を操作する方法|datetimeモジュールの基本と活用例
日付と時刻の操作は、あらゆるプログラミング言語において欠かせない処理の一つです。Pythonでは標準ライブラリとしてdatetimeモジュールが提供されており、日付や時刻に関する計算に必要な機能がほぼすべて揃っています。この記事では、実際のコード例を交えながら、Pythonでの日時処理の基本をわかりやすく解説します。
現在の日付と時刻を取得する
datetimeモジュールには、同名の「datetime」クラスが含まれています。このクラスをインポートし、now()メソッドを呼び出すことで、現在の日時を持つdatetimeオブジェクトを生成できます。生成したオブジェクトには現在の日付・時刻のすべての情報(年、月、日、時、分、秒など)が格納されており、それぞれの部分を自由に取り出して操作することが可能です。
コード例
from datetime import datetime
# 現在の日時オブジェクトを作成
dt_time_obj = datetime.now()
# 現在の日時を表示
print(dt_time_obj)
# オブジェクトの型を確認
print('オブジェクトの型:', type(dt_time_obj))
実行結果
2020-01-22 09:33:02.693863 オブジェクトの型: <class 'datetime.datetime'>
文字列とdatetimeの相互変換
strptime()メソッドを使えば文字列からdatetimeオブジェクトへ、strftime()メソッドを使えばdatetimeオブジェクトから文字列への変換ができます。外部のデータソースを扱う際、データが必ずしもPythonが認識できる形式で提供されるとは限らないため、この変換処理は実務上とても重要です。
以下の例では、文字列をdatetimeオブジェクトに変換し、さらにその逆の変換も行っています。
コード例
from datetime import datetime
dt_string = '2020-1-30 2-52-59'
# 文字列からdatetimeオブジェクトを作成
date_val = datetime.strptime(dt_string, "%Y-%m-%d %H-%M-%S")
print(date_val)
print('型:', type(date_val))
print("\n")
# datetimeオブジェクトから文字列を作成
date_val_str = datetime.strftime(date_val, "%Y-%m-%d %H-%M-%S")
print(date_val_str)
print('型:', type(date_val_str))
実行結果
2020-01-30 02:52:59 型: <class 'datetime.datetime'> 2020-01-30 02-52-59 型: <class 'str'>
日時から特定の部分を取り出す
書式指定子(ディレクティブ)とstrftime()メソッドを組み合わせることで、日時の中から必要な部分だけを抽出できます。主な書式指定子とその用途は以下の通りです。全指定子の一覧については、Python公式ドキュメントをご参照ください。
| 書式指定子 | 意味 |
|---|---|
| %A | 曜日名 |
| %B | 月名 |
| %M | 分 |
| %Y | 年(4桁) |
| %d | 日(月の中の日付) |
次の例は、これらの書式指定子の実際の使い方を示しています。
コード例
from datetime import datetime
dt_string = '2020-1-30 2-52-59'
# 文字列からdatetimeオブジェクトを作成
date_val = datetime.strptime(dt_string, "%Y-%m-%d %H-%M-%S")
# 年・日・月名・曜日をそれぞれ表示
print(date_val.year)
print(date_val.strftime("%d"))
print(date_val.strftime("%B"))
print(date_val.strftime("%A"), "\n")
実行結果
2020 30 January Thursday
日付と時刻の演算
datetimeモジュールを使うと、特定の日付に対して日数や時間を加算・減算したり、2つの日付を比較したりする計算も簡単に行えます。
timedeltaを使った加算・減算
timedeltaクラスを利用すると、「5日後」「2週間前」といった相対的な日時計算が直感的に記述できます。
コード例
from datetime import *
# 現在の日時を取得
dt_time_today = datetime.now()
print("今日の日付:", str(dt_time_today))
# 5日後の日付を計算
new_date = dt_time_today + timedelta(days=5)
print('5日後:', new_date)
# 2週間前の日付を計算
two_weeks_back = dt_time_today - timedelta(weeks=2)
print('2週間前:', two_weeks_back)
print('two_weeks_back の型:', type(two_weeks_back))
実行結果
今日の日付: 2020-01-29 12:38:03.290795 5日後: 2020-02-03 12:38:03.290795 2週間前: 2020-01-15 12:38:03.290795 two_weeks_back の型: <class 'datetime.datetime'>
演算子を使った日付の比較
2つの日付の間には演算子を適用できます。引き算(-)で日付の差分を求めたり、比較演算子(< や > など)で日付の大小を比較したりすることが可能です。
コード例
from datetime import datetime
# 2つの日付を定義
date1 = datetime(2018, 5, 12, 8, 11, 53)
date2 = datetime(2017, 6, 16, 12, 43, 27)
# 日付の差分を計算
date_diff = date1 - date2
print("差分:", date_diff)
# 日付を比較
print(date1 < date2)
実行結果
差分: 329 days, 19:28:26 False
このように、Pythonのdatetimeモジュールを使いこなせば、現在日時の取得から文字列変換、日付の加減算や比較まで、日常的な日時処理をすべて標準ライブラリだけでカバーできます。
-
Pythonで画像を操作する方法|Pillowライブラリの基本から実践まで
Pythonで画像処理を行う際に、最も人気があり事実上の標準とされているライブラリがPillowです。Pillowは旧Python Image Library(PIL)の後継バージョンであり、シンプルな操作から高度な画像加工まで幅広い機能を提供しています。また、SciPyやMatplotlibなど他のPythonライブラリにおける簡易的な画像サポートの基盤としても利用されています。Pillowのインストール方法作業を始める前に、PythonとPillowが必要です。Linux環境では、Fedora、Debian/Ubuntu、ArchLinuxなどの主要ディストリビューションにおいて、以前はP
-
PythonでPDFを操作しよう!PyPDF2ライブラリの使い方を徹底解説
Pythonは多彩なライブラリを備えた非常に汎用性の高いプログラミング言語です。日常業務でよく扱うPDF(Portable Document Format)ファイルについても、Pythonにはさまざまな操作手段が用意されています。本記事では、その中でも「PyPDF2」というライブラリを使ってPDFファイルを操作する方法を解説します。 PyPDF2は純粋なPythonで実装されたPDFライブラリで、PDFページの分割・結合・切り抜き・変換が可能です。さらに、カスタムデータや表示オプション、パスワードの追加、テキストやメタデータの取得、ファイル全体のマージといった機能も備えています。 PyPDF