Pythonで文字列をDateTimeに変換する方法|datetime⇔文字列の相互変換を徹底解説
Pythonには、日付や時刻を扱うための強力な機能が標準で用意されています。本記事では、決まった書式を持つ文字列を datetime オブジェクトに変換する方法と、その逆に datetime オブジェクトを文字列へ戻す方法を、具体的なコード例とともに解説します。
strptime() を使って文字列をdatetimeに変換する
datetime モジュールの strptime() 関数を使うと、書式指定子(フォーマットコード)を指定することで、文字列を datetime オブジェクトへ変換できます。元の文字列の並びに合わせて正しい書式指定子を組み合わせるのがポイントです。
主な書式指定子
よく使われる書式指定子は以下の通りです。
%B:月の名前(September など)%d:日(2桁)%Y:西暦4桁の年%H:時(24時間表記)%M:分%S:秒%p:AM / PM の表示
サンプルコード
import datetime
dt_str = 'September 19 2019 21:02:23 PM'
# 元の日時文字列
print("Given date time: \n", dt_str)
# 型の確認
print("Data Type: ", type(dt_str))
# 書式指定
dtformat = '%B %d %Y %H:%M:%S %p'
datetime_val = datetime.datetime.strptime(dt_str, dtformat)
print("After converting to date time: \n", datetime_val)
# 型の確認
print("Data type: ", type(datetime_val))
# datetimeを文字列へ戻す
dtstr_new = str(datetime_val)
print("The string Date time ", dtstr_new)
print("Data type: ", type(dtstr_new))
実行結果
上記のコードを実行すると、次のような結果が出力されます。
Given date time: September 19 2019 21:02:23 PM Data Type: <class 'str'> After converting to date time: 2019-09-19 21:02:23 Data type: <class 'datetime.datetime'> The string Date time 2019-09-19 21:02:23 Data type: <class 'str'>
文字列だったデータが strptime() によって datetime.datetime 型に変換され、さらに str() で再び文字列に戻っていることが確認できます。
str() を使ってdatetimeを文字列に変換する
str() 関数は、引数として渡した値を文字列に変換します。ここでは today() 関数で現在の日時を取得し、それを str() 関数に渡して文字列化してみましょう。
サンプルコード
import datetime
print("Date time data type: \n", datetime.datetime.today())
print("Data type: \n", type(datetime.datetime.today()))
dtstr = str(datetime.datetime.today())
print("String Date time:\n ", dtstr)
print("Data type: \n", type(dtstr))
実行結果
上記のコードを実行すると、次のような結果が出力されます。
Date time data type: 2020-05-18 11:09:40.986027 Data type: <class 'datetime.datetime'> String Date time: 2020-05-18 11:09:40.986027 Data type: <class 'str'>
まとめ
文字列から datetime オブジェクトへの変換には strptime()、datetime オブジェクトから文字列への変換には str() を使います。strftime() を使えば、任意の書式で日時を文字列として出力することも可能なので、用途に応じて使い分けるとよいでしょう。ログ解析やデータ前処理など、日時を扱う場面でぜひ活用してください。
-
PythonでUNIXタイムスタンプを読みやすい日付に変換する方法
UNIXタイムスタンプを人間が読み取れる日付に変換するには、Pythonの標準ライブラリであるdatetimeモジュールが提供するfromtimestamp関数を使用します。この関数はタイムスタンプを引数として受け取り、その時刻に対応するdatetimeオブジェクトを返します。基本的な使い方fromtimestamp()は、1970年1月1日(UTC)からの経過秒数をローカル時刻のdatetimeオブジェクトに変換してくれます。以下に具体的な例を示します。import datetime timestamp = datetime.datetime.fromtimestamp(150000000
-
【Python入門】strptimeを使って日付文字列をdateオブジェクトに変換する方法
Pythonでは、datetimeモジュールのstrptime関数を使うことで、文字列形式の日付データを簡単にdatetimeオブジェクトへ変換できます。この関数には、変換したい日付の文字列と、その日付がどのような書式で記述されているかを示すフォーマット指定子の2つの引数を渡します。基本的な使い方(サンプルコード)以下の例では、「2017年12月29日」という日付が「29122017」という文字列として表現されている場合に、それを日付オブジェクトへ変換しています。import datetime date_str = 29122017 # 日付文字列(2017年12月29日) format