Pythonのdatetimeモジュールは日付や時刻を扱うための便利な機能を提供しています。
この記事では、datetimeオブジェクトの生成方法や、format関数
を使って任意の形式の文字列に変換する方法を解説します。
datetimeオブジェクトの生成
Pythonで日時を扱うには、datetime
モジュールを使用します。
datetime
モジュールには、日時を表すdatetime
オブジェクトを生成するためのいくつかの方法があります。
現在の日時を取得する
現在の日時を取得するには、datetime
モジュールの datetime.now()
関数を使用します。
この関数は、現在の日時を表すdatetime
オブジェクトを返します。
from datetime import datetime
# 現在の日時を取得
now = datetime.now()
print(now)
2022-01-01 12:34:56.789012
指定した日時を生成する
特定の日時を表すdatetime
オブジェクトを生成するには、datetime
クラスのコンストラクタを使用します。
コンストラクタには、年、月、日、時、分、秒、マイクロ秒を引数として渡すことができます。
from datetime import datetime
# 指定した日時を生成
dt = datetime(2022, 1, 1, 12, 34, 56)
print(dt)
2022-01-01 12:34:56
文字列からdatetimeオブジェクトを生成する
日時を表す文字列からdatetime
オブジェクトを生成するには、 datetime.strptime()
関数を使用します。
この関数は、文字列と日時の書式を表すフォーマット文字列を引数として受け取り、対応するdatetime
オブジェクトを返します。
from datetime import datetime
# 文字列からdatetimeオブジェクトを生成
dt_str = '2022-01-01 12:34:56'
dt = datetime.strptime(dt_str, '%Y-%m-%d %H:%M:%S')
print(dt)
2022-01-01 12:34:56
strptime()
関数で使用するフォーマット文字列には、以下のような指定ができます。
%Y
: 4桁の年%m
: 2桁の月%d
: 2桁の日%H
: 2桁の時 (24時間表記)%M
: 2桁の分%S
: 2桁の秒
これらのフォーマット文字列を組み合わせて、日時の書式に合わせた文字列を解析することができます。
format関数の基本
format関数とは
format関数
は、Pythonの組み込み関数で、文字列の中に変数や値を埋め込むことができます。
特に、日付や時刻を扱う際には、datetimeオブジェクトを任意の形式の文字列に変換するのに役立ちます。
この記事では、format関数
を使ってdatetimeオブジェクトを様々な形式の文字列に変換する方法を解説します。
format関数の基本的な使い方
format関数
の基本的な使い方は以下の通りです。
"文字列{変数名}".format(変数名=値)
ここで、{変数名}
は、文字列の中に埋め込む値を指定するプレースホルダーです。
format関数
の引数で、変数名=値
の形式で値を指定します。
例えば、次のように書くことができます。
name = "山田"
age = 30
text = "私の名前は{name}で、年齢は{age}歳です。".format(name=name, age=age)
print(text)
私の名前は山田で、年齢は30歳です。
datetimeオブジェクトを任意の形式の文字列に変換する場合は、次のように書きます。
from datetime import datetime
now = datetime.now()
formatted_now = "現在の日時は{year}年{month}月{day}日 {hour}時{minute}分{second}秒です。".format(
year=now.year,
month=now.month,
day=now.day,
hour=now.hour,
minute=now.minute,
second=now.second
)
print(formatted_now)
現在の日時は2022年7月30日 15時30分45秒です。
このように、format関数
を使ってdatetimeオブジェクトを任意の形式の文字列に変換することができます。
次のセクションでは、さらに詳細なフォーマット指定を行う方法を解説します。
format関数で使用できる書式指定子
format関数
を使って、datetimeオブジェクトを任意の形式の文字列に変換する際に使用できる書式指定子について解説します。
書式指定子は、年・月・日、時・分・秒、曜日・週・日付、タイムゾーンの情報を表現するためのものです。
年・月・日の書式指定子
年・月・日に関する書式指定子は以下の通りです。
%Y
: 4桁の年(例: 2021)%y
: 2桁の年(例: 21)%m
: 2桁の月(例: 07)%d
: 2桁の日(例: 31)
例えば、以下のコードでは、現在の日付を「YYYY年MM月DD日」の形式で表示しています。
from datetime import datetime
now = datetime.now()
formatted_date = now.strftime("%Y年%m月%d日")
print(formatted_date)
2021年07月31日
時・分・秒の書式指定子
時・分・秒に関する書式指定子は以下の通りです。
%H
: 24時間制の2桁の時(例: 23)%I
: 12時間制の2桁の時(例: 11)%M
: 2桁の分(例: 59)%S
: 2桁の秒(例: 59)
例えば、以下のコードでは、現在の時刻を「HH時MM分SS秒」の形式で表示しています。
from datetime import datetime
now = datetime.now()
formatted_time = now.strftime("%H時%M分%S秒")
print(formatted_time)
23時59分59秒
曜日・週・日付の書式指定子
曜日・週・日付に関する書式指定子は以下の通りです。
%A
: 曜日の名前(例: Monday)%a
: 曜日の短縮名(例: Mon)%w
: 曜日の番号(0: 日曜日, 1: 月曜日, …, 6: 土曜日)%U
: 週番号(日曜日を週の始まりとする)%W
: 週番号(月曜日を週の始まりとする)%j
: 1月1日からの日数(例: 365)
例えば、以下のコードでは、現在の曜日と週番号を表示しています。
from datetime import datetime
now = datetime.now()
formatted_week = now.strftime("%A(%a), 週番号: %U")
print(formatted_week)
Saturday(Sat), 週番号: 30
タイムゾーンの書式指定子
タイムゾーンに関する書式指定子は以下の通りです。
%Z
: タイムゾーンの名前(例: UTC)%z
: タイムゾーンのオフセット(例: +0900)
例えば、以下のコードでは、現在のタイムゾーン情報を表示しています。
from datetime import datetime
now = datetime.now()
formatted_timezone = now.strftime("タイムゾーン: %Z, オフセット: %z")
print(formatted_timezone)
タイムゾーン: JST, オフセット: +0900
これらの書式指定子を組み合わせることで、任意の形式の日時文字列を作成することができます。
例えば、以下のコードでは、現在の日時を「YYYY年MM月DD日(曜日)HH時MM分SS秒」の形式で表示しています。
from datetime import datetime
now = datetime.now()
formatted_datetime = now.strftime("%Y年%m月%d日(%a)%H時%M分%S秒")
print(formatted_datetime)
2021年07月31日(Sat)23時59分59秒