Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで日付と時刻の計算を行う方法【timedeltaの使い方を解説】

Pythonでは、timedeltaオブジェクトを使うことで、日付や時刻の計算を非常に簡単に行えます。日時に時間を加算・減算したい場合は、まずdatetime.datetime()オブジェクトを作成し、そこにdatetime.timedelta()のインスタンスを足したり引いたりするだけです。

timedeltaオブジェクトは「期間(duration)」、つまり2つの日付や時刻の差分を表します。timedeltaコンストラクタの関数シグネチャは以下のとおりです。

datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])

引数に関する注意点

すべての引数は省略可能で、デフォルト値は0です。引数にはint型、long型、float型が使用でき、正負どちらの値も指定できます。詳細については公式ドキュメントを参照してください:https://docs.python.org/3/library/datetime.html#timedelta-objects

実行例:現在時刻から2時間10分前を求める

以下は、timedeltaオブジェクトを使って日付・時刻の計算を行う具体例です。

import datetime
old_time = datetime.datetime.now()
print(old_time)
new_time = old_time - datetime.timedelta(hours=2, minutes=10)
print(new_time)

出力結果

このコードを実行すると、次のような出力が得られます。

2018-01-04 11:09:00.694602
2018-01-04 08:59:00.694602

この例では、現在時刻から2時間10分前の時刻を計算しています。このようにtimedeltaを使えば、「○日前」「○時間後」といった直感的な日時計算が簡潔に記述できます。

datetime.time()オブジェクトでの注意点

datetime.time()オブジェクトに対しては、timedeltaによる演算はサポートされていません。既存のdatetime.time()オブジェクトに時差を加算したい場合は、datetime.datetime.combine()を使って一度datetime.datetime()インスタンスを生成し、計算を行った後、.time()メソッドで時刻部分を再度取り出す必要があります。

2つの日時の差分を求める方法

datetimeオブジェクト同士を引き算すると、その結果としてtimedeltaオブジェクトが返されます。このtimedeltaオブジェクトを使えば、2つの日時の正確な差分を取得できます。

サンプルコード

t1 = datetime.datetime.now()
t2 = datetime.datetime.now()
print(t1 - t2)
print(type(t1 - t2))

出力結果

このコードを実行すると、次のような出力が得られます。

-1 day, 23:59:56.653627
<class 'datetime.timedelta'>

このように、差分の型がdatetime.timedeltaクラスであることが確認できます。マイナスの差分の場合は「-1 day」のように表現される点にも注意しましょう。

まとめ

  • 日付・時刻の加算・減算にはdatetime.timedeltaを使用する
  • timedeltaは日・秒・マイクロ秒・ミリ秒・分・時間・週を引数に指定できる
  • datetime.time()には直接演算できないため、combine()でdatetime化してから計算する
  • datetime同士の引き算の結果はtimedeltaオブジェクトになる
  1. JavaScriptでエポック(1970年1月1日)以降の日時・タイムスタンプを取得する方法

    JavaScriptでエポック(1970年1月1日 00:00:00 UTC)以降の日時を取得するには、DateオブジェクトのgetTime()メソッドを使用します。このメソッドは、エポックから対象日時までの経過時間をミリ秒単位の数値で返します。 基本の書き方 まずは最小限のコードで動作を確認してみましょう。 // 現在の日時を取得 var currentDate = new Date(); document.write(Current Date: + currentDate); // エポックからの経過時間を取得(ミリ秒) var epochMillis = currentDate.ge

  2. OneNoteで日付と時刻を追加・編集する方法

    OneNoteで新しいページを作成すると、ノートブックに日付と時刻のスタンプが自動的に追加されます。この自動の日付と時刻は編集可能で、OneNoteが提供するタイムスタンプ機能を使えば、ページに自由に日付や時刻を追加することもできます。さらに、現在の日付や過去の日付を追加したり、特定の日付を入力して祝日などの予定を記録しておくことも可能です。 OneNoteで日付と時刻を挿入する方法 タイムスタンプとは、ノートブックのページに日付や時刻を追加できるOneNoteの便利な機能です。OneNoteで利用できるタイムスタンプには、以下の3種類があります。 日付: 今日の日付を挿入します。 時刻: