Python 日時、時間Delta、Strftime(フォーマット)と例

⚡ スマートサマリー

Python datetime モジュールは、date、time、timedelta クラスとともに、日付、時刻、および時間間隔をオブジェクトとして扱います。datetime モジュールは、strftime() を使用して出力をフォーマットし、文字列を解析し、timedelta 演算を使用して未来または過去の時刻を計算します。

  • 🔘 5つのクラス: datetimeモジュールは、日付と時刻の操作に必要なdate、time、datetime、timedelta、およびtzinfoクラスをグループ化しています。
  • ☑️ 現在の値: datetime.now() と date.today() は、曜日番号を含めた現在の日時を返します。
  • フォーマット: strftime() 関数は、%Y、%A、%H などの制御コードを使用して、日時を読みやすいテキストに変換します。
  • 🧪 タイムデルタ: timedeltaオブジェクトは期間を測定し、加算と減算によって未来または過去の日付を予測します。tracる。
  • 🛠️ ディレクティブ: 同じ制御コードが、出力用のstrftime()と、文字列をdatetime型に読み込むstrptime()を駆動します。
  • 🤖 AIワークフロー: 機械学習パイプラインは、時系列モデルのために、曜日や時間などの日時特徴量を抽出します。

Python 日付時刻

In Python, 日付、時刻、日時 クラスは、日付、時刻、時間間隔を扱うための多くの機能を提供します。 Python これらはオブジェクトなので、操作する際は、文字列やタイムスタンプではなく、実際にオブジェクトを操作していることになります。日付や時刻を操作する際は、必ずdatetimeモジュールをインポートする必要があります。

のdatetimeクラス Python 5つの主要なクラスに分類されます。

  • date – 日付(月、日、年)のみを操作します
  • time – 曜日に依存しない時間 (時、分、秒、マイクロ秒)
  • datetime – 時刻と日付の組み合わせ (月、日、年、時、秒、マイクロ秒)
  • timedelta — 日付を操作するために使用する時間の長さ
  • tzinfo— 腹筋tracタイムゾーンを扱うためのtクラス

Date および DateTime クラスの使用方法

ステップ 1) 日付時刻形式のコードを実行する前に Pythonをインポートすることが重要です Python 下のスクリーンショットに示すように、日付時刻モジュール。

Date および DateTime クラスを使用する

これらのインポートステートメントは、 Python コードを一切書かずに日付と時刻を操作できるライブラリ。

実行する前に以下の点を考慮してください。 Python 日時フォーマットコード

from datetime import date

この行は、 Python インタープリタはdatetimeモジュールからdateクラスをインポートします Python私たちはこの日付機能のコードを記述しているのではなく、単にそれをインポートして利用しているだけです。

date.today() を使用して日付を出力します

date.today() 関数には、いくつかのプロパティがあります。個々の日付、月、年などを表示できます。

例を見てみましょう

date.today() を使用して日付を出力します

今日の曜日番号

date.today() 関数は曜日番号も返します。以下は曜日表です。 Monday 日曜日は0、日曜日は6。

曜日番号
Monday 0
火曜日 1
水曜日 2
木曜日 3
金曜日 4
土曜日 5
日曜日 6

Weekday Number は、インデックスが曜日に依存する配列に役立ちます。

date.today() を使用して日付を出力します

ステップ 2) 次に、日付オブジェクトのインスタンスを作成します。

Date および DateTime クラスを使用する

ステップ 3) 次に、日付を出力してコードを実行します。

Date および DateTime クラスを使用する

出力は予想通りです。

Python 現在の日付と時刻: now() today()

ステップ1) Date オブジェクトと同様に、次も使用できます。 「日時オブジェクト」 in Python. Python 日付と時刻オブジェクトは日付と時刻を 時間、分、秒、ミリ秒。

Python 現在の日時

datetime のコードを実行すると、現在の日付と時刻が出力されます。

ステップ2) 「DATETIME OBJECT」を使用すると、時間クラスを呼び出すこともできます。たとえば、日付なしで現在時刻だけを表示したいとします。

t = datetime.time(datetime.now())
  • 時間クラスをインポートしました。 datetime.now() を使用して、現在の時刻の値を割り当てます。
  • 現在の時刻の値を変数 t に代入しています。

そして、これで私にちょうど良い時間が与えられます。 それでは、このプログラムを実行してみましょう。

Python 現在の日時

はい、ご覧のとおり、ここに日付と時刻が表示されています。そして次の行には、時刻だけが表示されています。

ステップ3) 曜日インデクサーを曜日の配列リストに適用することで、今日が何曜日かを特定します。

  • 曜日演算子 (wd) には、現在の曜日に応じて (0~6) の番号が割り当てられます。ここでは、曜日 (月、火、水…日) のリストの配列を宣言しました。
  • そのインデックス値を使用して、その日が何日であるかを確認します。 この場合、これは #2 で水曜日を表すため、出力では「どちらが水曜日ですか」と出力されます。

Python 現在の日時

datetime now を使用して現在の日付と時刻を取得する完全なコードは次のとおりです。

from datetime import date
from datetime import time
from datetime import datetime
def main():
    ##DATETIME OBJECTS
    #Get today's date from datetime class
    today=datetime.now()
    #print (today)
    # Get the current time
    #t = datetime.time(datetime.now())
    #print "The current time is", t
    #weekday returns 0 (monday) through 6 (sunday)
    wd=date.weekday(today)
    #Days start at 0 for monday
    days= ["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]
    print("Today is day number %d" % wd)
    print("which is a " + days[wd])

if __name__== "__main__":
    main()

Strftime() を使用して日付と時刻の出力をフォーマットする方法

これまで、datetimeとdateの使い方を学んできました。 内のオブジェクト Python。 さらに一歩進んで、書式設定関数を使用して時刻と日付を書式設定する方法を学習します。

ステップ1) まず、年をフォーマットする簡単な手順を見てみましょう。 例を挙げて理解するのが良いでしょう。

Strftime() を使用して日付と時刻の出力をフォーマットする

  • 私たちは、使用しました 「strftime関数」 フォーマット用。
  • この関数は異なるものを使用します 制御コード 出力を与えるために。
  • 各制御コードは、年、月、曜日、日付などのさまざまなパラメータに似ています。 [(%y/%Y – 年)、(%a/%A- 平日)、(%b/%B- 月)、(%d – 日)] 。
  • 私たちの場合、それは (「%Y」) これは年に似ていますが、世紀を含む完全な年を出力します (例: 2018)。

ステップ2) ここで、(“%Y”) を小文字 (“%y)” に置き換えてコードを実行すると、出力には (18) ではなく (2018) のみが表示されます。 以下のスクリーンショットに示すように、年の世紀は表示されません。

Strftime() を使用して日付と時刻の出力をフォーマットする

ステップ3) strf関数では、日付、曜日、月、年をそれぞれ個別に指定できます。また、strftime関数の制御コードを少し変更することで、テキストの書式設定も可能です。

Strftime() を使用して日付と時刻の出力をフォーマットする

strftime 関数内で (%a) を大文字の A に置き換えると、つまり (%A) とすると、出力は「Fri」という略語ではなく「Friday」と表示されます。

Strftime() を使用して日付と時刻の出力をフォーマットする

ステップ4) 「Strftime」関数を使用すると、ローカル システムの時刻、日付、またはその両方を取得することもできます。

  1. %C- は現地の日付と時刻を示します
  2. %x- は現地の日付を示します
  3. %X- は現地時間を示します

Strftime() を使用して日付と時刻の出力をフォーマットする

出力では、期待どおりの結果が表示されます。

ステップ5) 「strftime 関数」を使用すると、24 時間または 12 時間の任意の形式で時間を呼び出すことができます。

Strftime() を使用して日付と時刻の出力をフォーマットする

時間には %I/H、分には %M、秒には %S のような制御コードを定義するだけで、さまざまな形式の時間を呼び出すことができます。

12時間 時間が宣言されています [print now.strftime(“%I:%M:%S %p) ]

24時間 時間が宣言されています [print now.strftime(“%H:%M”)]

datetime を String オブジェクトに変換する完全なコードは次のとおりです。

#
#Example file for formatting time and date output
#
from datetime import datetime
def main():
   #Times and dates can be formatted using a set of predefined string
   #Control codes
      now= datetime.now() #get the current date and time
      #%c - local date and time, %x-local's date, %X- local's time
      print(now.strftime("%c"))
      print(now.strftime("%x"))
      print(now.strftime("%X"))
##### Time Formatting ####
      #%I/%H - 12/24 Hour, %M - minute, %S - second, %p - local's AM/PM
      print(now.strftime("%I:%M:%S %p")) # 12-Hour:Minute:Second:AM
      print(now.strftime("%H:%M")) # 24-Hour:Minute

if __name__== "__main__":
    main()

Timedeltaとは何か Python?

タイムデルタ Python は期間を表すオブジェクトです。主に2つの日付と時刻間の期間を計算するために使用されます。また、差分日付と時刻を持つオブジェクトを取得するためにも使用されます。timedeltaオブジェクトは、加算、減算などの数学演算をサポートしています。trac乗算、除算など

Timedelta オブジェクトの使い方

自律的AI Python timedelta オブジェクトを使用すると、未来と過去の両方の時間を推定できます。 言い換えれば、特別な日、日付、時刻を予測するためのタイムスパンです。

この関数は時刻や日付を出力するためのものではなく、未来または過去について計算するものであることに注意してください。では、 Python よりよく理解するための timedelta の例。

ステップ1) Timedeltaオブジェクトを実行するには、まずimport文を宣言し、次にコードを実行する必要があります。

  1. timedelta のインポート文を書く
  2. 次に、スクリーンショットに示すように、時間デルタからオブジェクトを出力するコードを記述します。
  3. コードを実行します。timedeltaは365日8時間15分の範囲を表し、同じものを出力します。

Timedelta オブジェクト

紛らわしいですか? 次のステップが役立ちます-

ステップ2) 今日の日時を取得して、import ステートメントが正常に機能しているかどうかを確認してみましょう。 コードが実行されると、今日の日付が出力されます。これは、インポート ステートメントが正常に機能していることを意味します。

Timedelta オブジェクト

ステップ3) デルタ オブジェクトを使用して、今から 1 年後の日付を取得する方法を説明します。コードを実行すると、期待どおりの出力が得られます。

Timedelta オブジェクト

ステップ4) 時間デルタを使用して現在の日付と時刻から将来の日付を計算する方法の別の例

Timedelta オブジェクト

ステップ5) もっと複雑な例を見てみましょう。新年から何日経ったかを調べたいとします。次のように進めます。

  • today= date.today() を使用すると、今日の日付が取得されます
  • 新年は常に 1 月 1,1 日であることはわかっていますが、年は異なる場合があります。 nyd= date(today.year,XNUMX) を使用して、変数 nyd に新年を格納します。
  • if nyd < today: 現在の日付が新年よりも大きいかどうかを比較します。大きい場合は、whileループに入ります。
  • ((today-nyd).days) は、現在の日付と新年の差を DAYS で返します。

Timedelta オブジェクト

出力には、「元旦はすでに 11 日前に過ぎた」ことが示されています。

完全に動作するコードは次のとおりです

#
# Example file for working with timedelta objects
#
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta

# construct a basic timedelta and print it
print (timedelta(days=365, hours=8, minutes=15))
# print today's date
print ("today is: " + str(datetime.now()))
# print today's date one year from now
print ("one year from now it will be:" + str(datetime.now() + timedelta(days=365)))
# create a timedelta that uses more than one argument
# print (in one week and 4 days it will be " + str(datetime.now() + timedelta(weeks=1, days=4)))
# How many days until New Year's Day?
today = date.today()  # get todays date
nyd = date(today.year, 1, 1)  # get New Year Day for the same year
# use date comparison to see if New Year Day has already gone for this year
# if it has, use the replace() function to get the date for next year
if nyd < today:
    print ("New Year day is already went by %d days ago" % ((today - nyd).days))

Python 2例

以下の例は、日付と時刻の操作を記述したものです。 Python 2. print は関数ではなくステートメントです。これらのバージョンは、レガシーシステムを維持する場合にのみ使用してください。 Python 2コード。

from datetime import date
from datetime import time
from datetime import datetime
def main():
 	##DATETIME OBJECTS
    #Get today's date from datetime class
	today=datetime.now()
	#print today
	# Get the current time
	#t = datetime.time(datetime.now())
	#print "The current time is", t
	#weekday returns 0 (monday) through 6 (sunday)
        wd = date.weekday(today)
	#Days start at 0 for monday
        days= ["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]
        print "Today is day number %d" % wd
        print "which is a " + days[wd]

if __name__== "__main__":
    main()
#
#Example file for formatting time and date output
#
from datetime import datetime
def main():
   #Times and dates can be formatted using a set of predefined string
   #Control codes
      now= datetime.now() #get the current date and time
      #%c - local date and time, %x-local's date, %X- local's time
      print now.strftime("%c")
      print now.strftime("%x")
      print now.strftime("%X")
##### Time Formatting ####   
      #%I/%H - 12/24 Hour, %M - minute, %S - second, %p - local's AM/PM
      print now.strftime("%I:%M:%S %p") # 12-Hour:Minute:Second:AM
      print now.strftime("%H:%M") # 24-Hour:Minute   

if __name__== "__main__":
    main()
#
# Example file for working with timedelta objects
#
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta

# construct a basic timedelta and print it
print timedelta(days=365, hours=8, minutes=15)
# print today's date
print "today is: " + str(datetime.now())
# print today's date one year from now
print "one year from now it will be:" + str(datetime.now() + timedelta(days=365))
# create a timedelta that uses more than one argument
# print "in one week and 4 days it will be " + str(datetime.now() + timedelta(weeks=1, days=4))
# How many days until New Year's Day?
today = date.today()  # get todays date
nyd = date(today.year, 1, 1)  # get New Year Day for the same year
# use date comparison to see if New Year Day has already gone for this year
# if it has, use the replace() function to get the date for next year
if nyd < today:
    print "New Year day is already went by %d days ago" % ((today - nyd).days)

よくあるご質問

文字列を datetime オブジェクトに解析するには、datetime.strptime(text, format) を使用します。strftime() と同じディレクティブを渡すことで、「2018-06-29」は「%Y-%m-%d」として読み込まれます。strftime() の逆関数として、strptime() は人間が読めるテキストを、計算に使用できる datetime オブジェクトに変換します。

tzinfo のない datetime は単純です。タイムゾーンを付加すると、タイムゾーンを認識できるようになります。組み込みの zoneinfo モジュールを使用します (Python 3.9+) または pytz パッケージを使用して日時をローカライズし、ゾーン間で変換して、計算が地域間で正しく保たれるようにします。

日時オブジェクトに対してtimestamp()メソッドを呼び出すと、Unixエポックからの秒数を浮動小数点数として取得できます。例えば、datetime.now().timestamp()のように呼び出します。逆に、datetime.fromtimestamp(value)を使用すると、Unixタイムスタンプから日時オブジェクトを再構築できます。

どちらも現在のローカル日時を返しますが、datetime.now() はオプションでタイムゾーン引数を受け付けるのに対し、datetime.today() は受け付けません。タイムゾーンを考慮したコードでは、datetime.now(tz) を使用することをお勧めします。そうすることで、結果に正しいオフセットが反映され、タイムゾーン情報を持たない状態を防ぐことができます。

はい。datetime モジュールには、 Pythonそのため、pip install は不要です。「from datetime import datetime, date, time, timedelta」でインポートすると、date、time、datetime、timedelta、tzinfo クラスがすぐに利用可能になります。

標準の ISO 8601 形式の文字列(例:「2018-06-29T08:15:27」)を取得するには、isoformat() メソッドを呼び出します。日付オブジェクトの場合は、「YYYY-MM-DD」が返されます。isoformat() は、ディレクティブからカスタムレイアウトを作成する strftime() とは異なり、制御コードを必要としません。

機械学習パイプラインは、datetimeとtimedeltaを使用して、生のタイムスタンプを曜日、時間、月、経過時間などの特徴量に変換します。これらの加工された日付特徴量は、時系列モデルやAI予測システムが季節性や周期性パターンを検出するのに役立ちます。

はい。GitHub Copilotとエージェント型AIアシスタントは、短いコメントからstrftime()フォーマット文字列、timedelta演算、タイムゾーン変換を生成し、難解な指示も説明できます。日付処理とオフセットは間違えやすいので、必ず提案されたコードを実行してください。