日時

[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モジュールを使用して日時をフォーマットする方法や、文字列から日時をパースする方法について解説しました。

また、タイムゾーンの扱いや日時の差分計算についても触れました。

これらの知識を活用することで、より柔軟に日時を操作できるようになります。

ぜひ、実際のプロジェクトでこれらのテクニックを試してみてください。

関連記事

Back to top button