[Python] 日時(datetime)を年月日などの形式でフォーマットする方法
Pythonで日時をフォーマットするには、datetime
モジュールを使用します。datetime
オブジェクトを特定の形式で文字列に変換するには、strftime
メソッドを利用します。
例えば、%Y-%m-%d
は「年-月-日」の形式を表し、%H:%M:%S
は「時:分:秒」の形式を表します。
これにより、日時を任意のフォーマットで表示することが可能です。strftime
を使うことで、可読性の高い日時表現を簡単に実現できます。
日時のフォーマット方法
Pythonでは、datetime
モジュールを使用して日時を扱うことができます。
その中でも、strftimeメソッド
を使うことで、日時を特定のフォーマットで文字列に変換することが可能です。
strftimeメソッドの基本
strftimeメソッド
は、datetime
オブジェクトを指定したフォーマットの文字列に変換します。
これにより、年、月、日、時、分、秒などを自由に組み合わせて表示することができます。
strftimeメソッドの使い方
以下のようにstrftimeメソッド
を使用します。
import datetime
# 現在の日時を取得
now = datetime.datetime.now()
# フォーマットを指定して文字列に変換
formatted_date = now.strftime("%Y年%m月%d日 %H時%M分%S秒")
print(formatted_date)
2023年10月05日 14時30分45秒
主なフォーマットコード一覧
フォーマットコード | 説明 |
---|---|
%Y | 年(4桁) |
%m | 月(01-12) |
%d | 日(01-31) |
%H | 時(00-23) |
%M | 分(00-59) |
%S | 秒(00-59) |
具体例
年月日のフォーマット
年月日のみを表示する場合、以下のように記述します。
import datetime
# 現在の日時を取得
now = datetime.datetime.now()
# 年月日のフォーマット
formatted_date = now.strftime("%Y年%m月%d日")
print(formatted_date)
2023年10月05日
時分秒のフォーマット
時分秒のみを表示する場合、次のように記述します。
import datetime
# 現在の日時を取得
now = datetime.datetime.now()
# 時分秒のフォーマット
formatted_time = now.strftime("%H時%M分%S秒")
print(formatted_time)
14時30分45秒
年月日時分秒のフォーマット
年月日時分秒をすべて表示する場合、以下のように記述します。
import datetime
# 現在の日時を取得
now = datetime.datetime.now()
# 年月日時分秒のフォーマット
formatted_full = now.strftime("%Y年%m月%d日 %H時%M分%S秒")
print(formatted_full)
2023年10月05日 14時30分45秒
日時のパース方法
Pythonでは、文字列形式の日時をdatetime
オブジェクトに変換するために、strptimeメソッド
を使用します。
このメソッドを使うことで、特定のフォーマットに従った文字列を日時として解釈することができます。
strptimeメソッドの基本
strptimeメソッド
は、指定したフォーマットに基づいて文字列をdatetime
オブジェクトに変換します。
これにより、文字列から日時情報を抽出することが可能です。
strptimeメソッドの使い方
以下のようにstrptimeメソッド
を使用します。
import datetime
# 文字列形式の日時
date_string = "2023年10月05日 14時30分45秒"
# フォーマットを指定してdatetimeオブジェクトに変換
parsed_date = datetime.datetime.strptime(date_string, "%Y年%m月%d日 %H時%M分%S秒")
print(parsed_date)
2023-10-05 14:30:45
主なフォーマットコード一覧
フォーマットコード | 説明 |
---|---|
%Y | 年(4桁) |
%m | 月(01-12) |
%d | 日(01-31) |
%H | 時(00-23) |
%M | 分(00-59) |
%S | 秒(00-59) |
具体例
年月日のパース
年月日のみを含む文字列をパースする場合、以下のように記述します。
import datetime
# 文字列形式の日時
date_string = "2023年10月05日"
# 年月日のパース
parsed_date = datetime.datetime.strptime(date_string, "%Y年%m月%d日")
print(parsed_date)
2023-10-05 00:00:00
時分秒のパース
時分秒のみを含む文字列をパースする場合、次のように記述します。
import datetime
# 文字列形式の日時
time_string = "14時30分45秒"
# 時分秒のパース
parsed_time = datetime.datetime.strptime(time_string, "%H時%M分%S秒")
print(parsed_time)
1900-01-01 14:30:45
年月日時分秒のパース
年月日時分秒を含む文字列をパースする場合、以下のように記述します。
import datetime
# 文字列形式の日時
full_string = "2023年10月05日 14時30分45秒"
# 年月日時分秒のパース
parsed_full = datetime.datetime.strptime(full_string, "%Y年%m月%d日 %H時%M分%S秒")
print(parsed_full)
2023-10-05 14:30:45
応用例
Pythonのdatetime
モジュールを使用することで、日時の操作をさらに高度に行うことができます。
ここでは、タイムゾーンの扱いや日時の差分計算について解説します。
タイムゾーンの扱い
Pythonでは、pytz
モジュールを使用してタイムゾーンを扱うことができます。
これにより、異なるタイムゾーン間での日時の変換が可能になります。
pytzモジュールの利用
まず、pytz
モジュールをインストールする必要があります。
以下のコマンドでインストールできます。
pip install pytz
次に、pytz
を使ってタイムゾーンを指定した日時を作成する方法を示します。
import datetime
import pytz
# UTCタイムゾーンを取得
utc_zone = pytz.utc
# 現在のUTC日時を取得
utc_now = datetime.datetime.now(utc_zone)
print(utc_now)
2023-10-05 05:30:45+00:00
タイムゾーンの変換
異なるタイムゾーン間での日時の変換は、以下のように行います。
import datetime
import pytz
# UTCタイムゾーンを取得
utc_zone = pytz.utc
# 日本のタイムゾーンを取得
tokyo_zone = pytz.timezone("Asia/Tokyo")
# 現在のUTC日時を取得
utc_now = datetime.datetime.now(utc_zone)
# UTCから日本時間に変換
tokyo_time = utc_now.astimezone(tokyo_zone)
print(tokyo_time)
2023-10-05 14:30:45+09:00
日時の差分計算
datetime
モジュールでは、日時の差分を計算するためにtimedelta
オブジェクトを使用します。
これにより、日時の加算や減算が簡単に行えます。
timedeltaオブジェクトの利用
timedelta
オブジェクトを使って、特定の時間の差を表現することができます。
import datetime
# 2日間の差分を表すtimedeltaオブジェクトを作成
delta = datetime.timedelta(days=2)
# 現在の日時を取得
now = datetime.datetime.now()
# 現在の日時に2日を加算
future_date = now + delta
print(future_date)
2023-10-07 14:30:45.123456
日時の加算・減算
日時の加算や減算は、timedelta
オブジェクトを使って簡単に行えます。
import datetime
# 1週間の差分を表すtimedeltaオブジェクトを作成
delta = datetime.timedelta(weeks=1)
# 現在の日時を取得
now = datetime.datetime.now()
# 現在の日時から1週間を引く
past_date = now - delta
print(past_date)
2023-09-28 14:30:45.123456
まとめ
この記事では、Pythonのdatetime
モジュールを使用して日時をフォーマットする方法や、文字列から日時をパースする方法について解説しました。
また、タイムゾーンの扱いや日時の差分計算についても触れました。
これらの知識を活用することで、より柔軟に日時を操作できるようになります。
ぜひ、実際のプロジェクトでこれらのテクニックを試してみてください。