あるタイプのデータから別のタイプのデータへの変換は、どのプログラミング言語でも重要です。ほとんどすべてのプログラミング言語は、組み込みデータ型の型変換をサポートしています。
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
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
に進みましょう。
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 で時差を計算する方法を調べることもできます。
コーディングを楽しんでください 🙂






![2021 年に Raspberry Pi Web サーバーをセットアップする方法 [ガイド]](https://i0.wp.com/pcmanabu.com/wp-content/uploads/2019/10/web-server-02-309x198.png?w=1200&resize=1200,0&ssl=1)





