テクノロジー 開発 Python で文字列を日時に変換する方法

Python で文字列を日時に変換する方法

あるタイプのデータから別のタイプのデータへの変換は、どのプログラミング言語でも重要です。ほとんどすべてのプログラミング言語は、組み込みデータ型の型変換をサポートしています。

datetime などのカスタム データ型には、変換用の追加モジュールが必要です。プログラマーにとってモジュールの作業は決して簡単ではないため、特に datetime 変換にはモジュールが必要です。幸いなことに、Python には日時を処理するための組み込みモジュールがあります。

さまざまなモジュールを使用して、Python で datetime 文字列を datetime オブジェクトに変換する方法を学びます。本題に入る前に、そもそもなぜ変換する必要があるのか​​を見てみましょう。

Python で文字列を日時に変換する方法
Python で文字列を日時に変換する方法

なぜ日時文字列を日時オブジェクトに変換する必要があるのでしょうか?

日付を扱う必要がある場合、日付が文字列形式であると作業が難しくなります。これらを日時形式に変換すると、操作が非常に簡単になります。文字列内の日付は通常の文字列と同様です。日付を操作するための特別なメソッドはありません。これには一般的な文字列メソッドが含まれますが、日付を扱うときには必要ありません。

2 つの日付を比較する必要があるとします。文字列形式であれば正しく比較できます。 datetime 形式の場合は、数値のような比較演算子を使用できます。

これは、 datetime 形式に変換すると作業が簡単になる 1 つのシナリオにすぎません。日付の追加、減算、タイムゾーンの処理など、 datetime 文字列を datetime オブジェクトに変換することで作業がこれまでより簡単になるシナリオがたくさんあります。

そうは言っても、 datetime 文字列を datetime オブジェクトに変換するさまざまな方法を見てみましょう。組み込みの datetime モジュールとサードパーティの dateutil モジュールを使用して、 datetime 文字列を datetime オブジェクトに変換します。 datetime モジュールから始めましょう

Python で文字列を日時に変換する方法
Python で文字列を日時に変換する方法

日時の使用

datetime 、日付と時刻を操作するために使用される Python の組み込みモジュールです。このモジュールには、日付と時刻の操作に役立つクラスが多数あります。変換には datetime.datetime クラスを使用します。

datetime.datetime には多くのメソッドがあります。変換に役立つ strptime メソッドに興味があります。確認してみましょう。

Python で文字列を日時に変換する方法
Python で文字列を日時に変換する方法

日時.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-excel を使用できます。追加しましょう。

 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-excel を追加できます。これは、コードが途中で壊れるのを避けるのに役立ちます。これはこのチュートリアルのコンテキストとは特に関係ありませんが、コードで使用することを思い出させるでしょう。

datetime モジュールについては以上です。次のモジュール dateutil に進みましょう。

Python で文字列を日時に変換する方法
Python で文字列を日時に変換する方法

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 オブジェクトに変換しました。 time という別の組み込みモジュールがあり、これを使用して datetime 文字列を datetime dateutil モジュールと同様の DateTime オブジェクトに変換できます。自分で試してみてください。他のモジュールでも同様のことをすでに行っているので、難しいことではありません。

同じことを実現できるライブラリが他にもあるかもしれません。チュートリアルで使用したモジュールは標準であり、広く使用されています。他のモジュールについて詳しく調べて、自分に合った最適なモジュールを選択することができます。

Python で時差を計算する方法を調べることもできます。

コーディングを楽しんでください 🙂

Python で文字列を日時に変換する方法
Python で文字列を日時に変換する方法

「 Python で文字列を日時に変換する方法」についてわかりやすく解説!絶対に観るべきベスト2動画

【毎日Python】Pythonでデータフレームのカラムを日時型に変換する方法|to_datetime
【毎日Python】Pythonで文字列を置換する方法|str.replace

あるタイプのデータから別のタイプのデータへの変換は、どのプログラミング言語でも重要です。ほとんどすべてのプログラミング言語は、組み込みデータ型の型変換をサポートしています。

datetime などのカスタム データ型には、変換用の追加モジュールが必要です。プログラマーにとってモジュールの作業は決して簡単ではないため、特に datetime 変換にはモジュールが必要です。幸いなことに、Python には日時を処理するための組み込みモジュールがあります。

さまざまなモジュールを使用して、Python で datetime 文字列を datetime オブジェクトに変換する方法を学びます。本題に入る前に、そもそもなぜ変換する必要があるのか​​を見てみましょう。

Python で文字列を日時に変換する方法
Python で文字列を日時に変換する方法

なぜ日時文字列を日時オブジェクトに変換する必要があるのでしょうか?

日付を扱う必要がある場合、日付が文字列形式であると作業が難しくなります。これらを日時形式に変換すると、操作が非常に簡単になります。文字列内の日付は通常の文字列と同様です。日付を操作するための特別なメソッドはありません。これには一般的な文字列メソッドが含まれますが、日付を扱うときには必要ありません。

2 つの日付を比較する必要があるとします。文字列形式であれば正しく比較できます。 datetime 形式の場合は、数値のような比較演算子を使用できます。

これは、 datetime 形式に変換すると作業が簡単になる 1 つのシナリオにすぎません。日付の追加、減算、タイムゾーンの処理など、 datetime 文字列を datetime オブジェクトに変換することで作業がこれまでより簡単になるシナリオがたくさんあります。

そうは言っても、 datetime 文字列を datetime オブジェクトに変換するさまざまな方法を見てみましょう。組み込みの datetime モジュールとサードパーティの dateutil モジュールを使用して、 datetime 文字列を datetime オブジェクトに変換します。 datetime モジュールから始めましょう

Python で文字列を日時に変換する方法
Python で文字列を日時に変換する方法

日時の使用

datetime 、日付と時刻を操作するために使用される Python の組み込みモジュールです。このモジュールには、日付と時刻の操作に役立つクラスが多数あります。変換には datetime.datetime クラスを使用します。

datetime.datetime には多くのメソッドがあります。変換に役立つ strptime メソッドに興味があります。確認してみましょう。

Python で文字列を日時に変換する方法
Python で文字列を日時に変換する方法

日時.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-excel を使用できます。追加しましょう。

 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-excel を追加できます。これは、コードが途中で壊れるのを避けるのに役立ちます。これはこのチュートリアルのコンテキストとは特に関係ありませんが、コードで使用することを思い出させるでしょう。

datetime モジュールについては以上です。次のモジュール dateutil に進みましょう。

Python で文字列を日時に変換する方法
Python で文字列を日時に変換する方法

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 オブジェクトに変換しました。 time という別の組み込みモジュールがあり、これを使用して datetime 文字列を datetime dateutil モジュールと同様の DateTime オブジェクトに変換できます。自分で試してみてください。他のモジュールでも同様のことをすでに行っているので、難しいことではありません。

同じことを実現できるライブラリが他にもあるかもしれません。チュートリアルで使用したモジュールは標準であり、広く使用されています。他のモジュールについて詳しく調べて、自分に合った最適なモジュールを選択することができます。

Python で時差を計算する方法を調べることもできます。

コーディングを楽しんでください 🙂

Python で文字列を日時に変換する方法
Python で文字列を日時に変換する方法

「 Python で文字列を日時に変換する方法」についてわかりやすく解説!絶対に観るべきベスト2動画

【毎日Python】Pythonでデータフレームのカラムを日時型に変換する方法|to_datetime
【毎日Python】Pythonで文字列を置換する方法|str.replace