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

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


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

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

さまざまなモジュールを使用して、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

datetimeメソッドはそれぞれオブジェクトを返します。ここでも、日付と時刻についてはそれぞれの方法が使用されます。

上で見た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に進みましょう。

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モジュールで見たように、 datetimeオブジェクトに個別にアクセスできます。コードを見てみましょう。

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

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

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

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

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

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