datetimeとは?
datetimeはPythonの標準ライブラリで、日付と時間を操作するためのクラスを提供します。日付や時間の表現、比較、計算、フォーマットなど、さまざまな日時関連の操作を行うことができます。datetimeモジュールには、dateクラス、timeクラス、datetimeクラスなどが含まれており、それぞれが日付、時間、日時の情報を扱います。実際にまずはインポートをしてみましょう。(お使いのversionによっては”This version of python seems to be incorrectly compiled”と表記されることがあります。)
モジュールでのdatetimeとともに次に使うオブジェクトtimedeltaも呼び出します。
from datetime import datetime, timedelta
import datetime
date.today() – 本日の日付
それではライブラリでのdatetimeを使って今日、明日、昨日の日付がどのようにでるか確かめてみましょう。
まずはtodayという変数を作成します。date オブジェクトでのdate.todayを使います。
today = datetime.date.today()
print(today)
##20◯◯-06-23
print(today)で返すと、本日の日付が結果としてでてきて、
20◯◯-06-23として20◯◯年、06月の23日とでます。。ここでは仮に20◯◯年としています。
datetime.now() – 本日の日付、詳細(時間)
また、今度はdate.today()でなくdate.now()を試してみましょう。新しくtodaynowという変数を作ります。
todaynow = datetime.datetime.now()
print(todaynow)
##20◯◯-06-23 14:05:23.786185
今度の結果は、日付だけでなく、現在の時間まで事細かに呼び出される結果となります。
先程の20◯◯年、06月の23日の結果だけでなく、14:05:23.786185
という項目も出てきました。これは14時05分23.786185秒という現在の時間になります。ちなみにこの時間はtodaynow
の変数を作ったときの時間になり、print(todaynow)
で出した時間ではありません。
timedelta ( ) で昨日と明日を表記
今度は昨日と明日の数値を出してみます。
ここでは時間の加算や減算を行えるtimedeltaを使用します。todayの変数からtimedelta(1)を引きますと前日の日付がでます。先程は
yesterday = today - timedelta(1)
tomorrow = today + timedelta(1)
print(yesterday,tomorrow)
##20◯◯-06-22 20◯◯-06-24
ここでは時間の加算や減算を行えるtimedeltaを使用します。todayの変数からtimedelta(1)を引きますと(- timedelta(1)
)前日の日付がでます。先程は20◯◯-06-23
でしたが結果でしたが昨日としてのyesterday
は20◯◯-06-22
となります。同様に+ timedelta(1)
をすると20◯◯-06-24
と明日(23→24日)がでてきます。
datetime.combineを使った例
from datetime import datetime, time, date
# 日付と時間の要素を作成
my_date = date(2023, 6, 23)
my_time = time(12, 30, 0)
# 日付と時間を組み合わせて新しいdatetimeオブジェクトを作成
combined_datetime = datetime.combine(my_date, my_time)
print(combined_datetime)
##2023-06-23 12:30:00
このコードでは、dateクラスとtimeクラスを使用して、それぞれmy_dateとmy_timeという日付と時間の要素を作成します。その後、datetime.combine()関数を使用して、my_dateとmy_timeを組み合わせて新しいdatetimeオブジェクトであるcombined_datetimeを作成します。
最後に、combined_datetimeを表示しています。これにより、指定した日付と時間が組み合わさった完全なdatetimeオブジェクトが出力されます。
この例では、datetime.combineを使用して、日付と時間の要素を組み合わせて完全な日時オブジェクトを作成しています。結果として2023-06-23 12:30:00
が作成されます。