日付や時刻の一部の値を別の値に置き換えたインスタンスを生成する

広告

datetime クラスの replace メソッドを使用することで、月や分など日付や時刻の一部の値を別の値に置き換えたインスタンスを生成することができます。 またタイムゾーンの値が含まれないインスタンスに対してタイムゾーンの情報を加えた新しいインスタンスを生成することもできます。ここでは日付や時刻の一部の値を別の値に置き換えたインスタンスを生成する方法について解説します。

日付や時刻の値を別の値に置き換える

datetime クラスのインスタンスに対して日付や時刻の値を別の値に置き換えた新しいインスタンスを作成するには datetime クラスの replace メソッドを使用します。

datetime.replace(year=self.year, month=self.month, day=self.day, hour=self.hour, minute=self.minute, second=self.second, microsecond=self.microsecond, tzinfo=self.tzinfo, * fold=0)

例えば年に関する値を変更する場合は、引数として year=2019 のように指定します。引数に指定しなかった値はそのままです。一部の値を別の値に置き換えて新しい datetime クラスのインスタンスを作成します。

具体的には次のように記述します。

import datetime

tokyo_tz = datetime.timezone(datetime.timedelta(hours=9))
dt = datetime.datetime.now(tokyo_tz)
print(dt);
--> 2020-07-22 23:48:03.582738+09:00

new_dt = dt.replace(year=2019, hour=4, minute=0, second=0)
print(new_dt);
--> 2019-07-22 04:00:00.582738+09:00

なお replace メソッドは date クラスおよび time クラスでも用意されています。

サンプルプログラム

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 sample7-1.py という名前で保存します。

import datetime

tokyo_tz = datetime.timezone(datetime.timedelta(hours=9))

dt = datetime.datetime.now()
print(dt);
print(dt.replace(hour=4, minute=0, second=0))
print(dt.replace(year=2018, month=4, day=1))
print(dt.replace(tzinfo=tokyo_tz))

その後で、次のように実行してください。

python sample7-1.py

日付や時刻の値を指定した書式を使って文字列として取得する(1)

3 つ目はタイムゾーンに関する情報を持っていなかった datetime クラスのインスタンスを利用して、タイムゾーンの情報を加えた新しいインスタンスを生成しました。

-- --

日付や時刻の一部の値を別の値に置き換えたインスタンスを生成する方法について解説します。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。