Python で文字列を日時に変換する方法
公開: 2022-12-20あるタイプのデータから別のタイプのデータへの変換は、どのプログラミング言語でも重要です。 ほとんどすべてのプログラミング言語は、組み込みデータ型の型変換をサポートしています。
datetime などのカスタム データ型には、変換用の追加モジュールが必要です。 プログラマーにとってモジュールを操作するのは決して簡単ではなかったため、特にdatetime
変換にはモジュールが必要です。 幸いなことに、Python には datetime を操作するための組み込みモジュールがあります。
さまざまなモジュールを使用して、Python でdatetime
文字列をdatetime
オブジェクトに変換する方法を学習します。 それに飛び込む前に、そもそも変換する必要がある理由を見てみましょう。
日時文字列を日時オブジェクトに変換する必要があるのはなぜですか?
日付を操作する必要がある場合、文字列形式では操作が簡単ではありません。 それらを日時形式に変換すると、それらの操作が非常に簡単になります。 文字列の日付は通常の文字列と同じです。 日付を操作するための特別なメソッドはありません。 日付を操作する際には必要ない一般的な文字列メソッドがあります。
2 つの日付を比較する必要があるとします。 文字列形式であれば、正しく比較できます。 datetime
形式の場合は、数値などの比較演算子を使用できます。
これは、 datetime
形式への変換が簡単になるシナリオの 1 つにすぎません。 日付の加算、減算、タイムゾーンの処理など、 datetime
文字列をdatetime
オブジェクトに変換することで、私たちの生活がこれまで以上に簡単になるシナリオはたくさんあります。
そうは言っても、 datetime
文字列をdatetime
オブジェクトに変換するさまざまな方法を見てみましょう。 組み込みのdatetime
およびサードパーティのdateutil
モジュールを使用して、 datetime
文字列をdatetime
オブジェクトに変換します。 datetime モジュールから始めましょう
日時の使用
datetime
は、日付と時刻を操作するために使用される Python の組み込みモジュールです。 このモジュールには、日付と時刻を扱うのに役立つクラスがたくさんあります。 変換にはdatetime.datetime
クラスを使用します。
datetime.datetime
には多くのメソッドがあります。 変換に役立つstrptime
メソッドに関心があります。 確認しましょう。
日時.strptime
datetime.strptime
メソッドは、 datetime
文字列をdatetime
オブジェクトに変換するために使用されます。 2 つの文字列が必要です。1 つはdatetime
文字列で、もう 1 つはそのdatetime
文字列の形式です。 そして、 datetime
オブジェクトを返します。
例を見てみましょう
from datetime import datetime string = "19-12-2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" print(datetime.strptime(string, formatting))
上記のコードを実行すると、次の出力が表示されます。
2022-12-19 21:37:56
datetime
文字列を取得し、 datetime.strptime
メソッドを使用してそれをdatetime
オブジェクトに変換しました。 メソッドに指定する形式がdatetime
文字列と正確に一致していることを確認してください。 それらが一致しなかった場合、エラーまたは正しくない出力が得られる可能性があります。
datetime
形式にいくつかの形式コードを使用しました。 ドキュメント内のすべての形式コードを参照できます。
datetime.strptime
メソッドは完全なdatetime
を返します。 日付と時刻を別々に取得したい場合は、 datetime
オブジェクトのtime
メソッドを使用できます。 コードを見てみましょう。
from datetime import datetime string = "19-12-2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" ## getting date separately print("Date:", datetime.strptime(string, formatting).date()) ## getting time separately print("Time:", datetime.strptime(string, formatting).time())
上記のコードを実行すると、次の出力が表示されます。
Date: 2022-12-19 Time: 21:37:56
メソッドdate
とtime
は、それぞれのオブジェクトを返します。 日付と時刻については、それぞれのメソッドがあります。
上記のdatetime.strptime
メソッドに正しい文字列と形式を提供しました。 それらを正しく提供しなかった場合、エラーが発生します。 これらのエラーを処理する方法を見てみましょう。 次のコードを実行します。
from datetime import datetime string = "19:12:2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" print(datetime.strptime(string, formatting))
上記のコードは、フォーマットがdatetime
文字列と一致しないため、エラーをスローします。 この種のエラーを処理するには、Python の try-except を使用できます。 追加しましょう。
from datetime import datetime try: string = "19:12:2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" print(datetime.strptime(string, formatting)) except ValueError as error: print(error)
ここで、コードをもう一度実行します。 コードを壊すことなく、次のエラー メッセージが表示されます。
time data '19:12:2022 09:37:56 PM' does not match format '%d-%m-%Y %I:%M:%S %p'
同様に、次のparser.parse
メソッドにも try-except を追加できます。 途中でコードを壊さないようにするのに役立ちます。 これは、このチュートリアルのコンテキストとは特に関係ありませんが、コードで使用することを思い出させてくれます。
datetime
モジュールは以上です。 次のモジュールdateutil
に移りましょう。
dateutil の使用
モジュールdateutil
は、 datetime
モジュールの拡張機能を提供します。 簡単に使用できる多くのメソッドにより、日付と時刻の操作が非常に簡単になります。 次のコマンドでモジュールをインストールしましょう。
pip install python-dateutil
関心のあるメソッドはdateutil.parser.parse
です。 datetime
文字列をdatetime
オブジェクトに変換する方法を見てみましょう。
パーサー.パース
メソッドparser.parse
はdatetime
文字列を受け取り、それをそれぞれのdatetime
オブジェクト形式に変換します。 このメソッドにフォーマットを指定する必要はありません。 指定されたdatetime
文字列をdatetime
オブジェクトに自動的に変換します。 例を見てみましょう。
from dateutil import parser string = "19-12-2022 09:37:56 PM" print(parser.parse(string))
上記のコードを実行すると、次の出力が表示されます。
2022-12-19 21:37:56
datetime
文字列は、 parser.parse
メソッドが受け入れる特定の形式である必要があります。 datetime
文字列の形式が目的の形式と異なる場合、エラーがスローされます。 自動変換に使用できるすべての日時文字列形式を確認できます。
parser.parse
メソッドはdatetime
オブジェクトを返すので、 datetime
モジュールで見たように、 date
オブジェクトとtime
オブジェクトに別々にアクセスできます。 コードを見てみましょう。
from dateutil import parser string = "19-12-2022 09:37:56 PM" print("Date:", parser.parse(string).date()) print("Time:", parser.parse(string).time())
上記のコードを実行すると、以下の出力が表示されます。
Date: 2022-12-19 Time: 21:37:56
ご覧のとおり、 dateutil
を使用すると、日付と時刻を比較的簡単に操作できます。 ドキュメントでモジュールを調べることができます。
結論
1 つの組み込みモジュールと 1 つのサードパーティ モジュールを使用して、 datetime
文字列を DateTime オブジェクトに変換しました。 datetime
およびdateutil
モジュールと同様に、 datetime
文字列を DateTime オブジェクトに変換できるtime
という別の組み込みモジュールがあります。 自分で試してみてください。 他のモジュールで同様のことをすでに行っているので、難しいことではありません。
同じことを実現できるライブラリが他にもあるかもしれません。 Thing チュートリアルで使用したモジュールは、標準的で広く使用されています。 他のモジュールについて詳しく調べて、自分に最適なモジュールを選択できます。
Python で時差を計算する方法を調べることもできます。
ハッピーコーディング