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

  1. datetime.strptime() 文字列を datetime に変換する
  2. datetime.strptime() の例

このチュートリアルでは、Python が文字列 stringdatetime オブジェクトに変換する方法を紹介し、次に一般的な時間形式変換を実装するコード例をリストします。

datetime.strptime() 文字列を datetime に変換する

前のチュートリアルでは、datetime.strftime() メソッドを使用して文字列形式で日時 datetime を取得する方法を 学習しました。ここでは、datetime.strptime() メソッドを使用して、逆変換を実装します。2つのメソッド fp の違いは、それぞれ formatparse に対応しています。

datetime.strptime() メソッドは、指定された datetime 形式で入力文字列を解析し、解析が成功した場合、datetime オブジェクトを返します。

この strptime() 方法を使用する基本的な例を以下に示します。

from datetime import datetime

datetime.strptime("2018-01-31", "%Y-%m-%d")

結果は

datetime.datetime(2018, 1, 31, 0, 0)

参照用に、文字列形式コードのディレクティブをここにリストします

指令 意味
%a ロケールの省略名としての曜日。 日、月、…、土(en_US);だから、Mo、…、Sa(de_DE)
%A ロケールのフルネームとしての曜日。 日曜日、月曜日、…、土曜日(en_US);ソンタグ、モンタグ、…、サムスタッグ(de_DE)
%w 10 進数としての曜日。0 は日曜日、6 は土曜日です。 0、1、…、6
%d ゼロが埋め込まれた 10 進数としての日付。 01、02、…、31
%b ロケールの省略名としての月。 1 月、2 月、…、12 月(en_US); 1 月、2 月、…、デズ(de_DE)
%B ロケールのフルネームとしての月。 1 月、2 月、…、12 月(en_US); 1 月、2 月、…、12 月(de_DE)
%m ゼロが埋め込まれた 10 進数としての月。 01、02、…、12
%y ゼロが埋め込まれた 10 進数としての世紀のない年。 00、01、…、99
%Y 10 進数としての世紀を含む年。 0001、0002、…、2013、2014、…、9998、9999
%H ゼロが埋め込まれた 10 進数としての時間(24 時間制)。 00、01、…、23
%I ゼロが埋め込まれた 10 進数としての時間(12 時間制)。 01、02、…、12
%p AM または PM に相当するロケール。 AM、PM(en_US); am、pm(de_DE)
%M ゼロが埋め込まれた 10 進数としての分。 00、01、…、59
%S ゼロが埋め込まれた 10 進数としての秒。 00、01、…、59
%f 左側にゼロが埋め込まれた 10 進数としてのマイクロ秒。 000000、000001、…、999999
%z ±HHMM SS 形式の UTC オフセット。 (空)、+ 0000、-0400、+ 1030
%Z タイムゾーン名(オブジェクトが単純な場合は空の文字列)。 (空)、UTC、EST、CST
%j ゼロが埋め込まれた 10 進数としての日付。 001、002、…、366
%U ゼロが埋め込まれた 10 進数としての年の週番号(週の最初の日は日曜日)。新しい年の最初の日曜日に先行するすべての日は、0 週目と見なされます。 00、01、…、53
%W 10 進数としての年の週番号(週の最初の日は月曜日)。新しい年の最初の月曜日に先行するすべての日は、0 週目と見なされます。 00、01、…、53
%c ロケールの適切な日時表現。 火 8 月 16 日 21:30:00 1988(en_US); Di 16 Aug 21:30:00 1988(de_DE)
%x ロケールの適切な日付表現。 88/16/88(なし); 08/16/1988(en_US); 16.08.1988(de_DE)
%X ロケールの適切な時間表現。 21:30:00(en_US); 21:30:00(de_DE)
%% リテラル '%' 文字。

datetime.strptime() の例

7-May-2013 フォーマット

from datetime import datetime

dateString = "7-May-2018"
dateFormatter = "%u-%b-%Y"
datetime.strptime(dateString, dateFormatter)

出力は、

datetime.datetime(2013, 5, 1, 0, 0)

31/12/2018 フォーマット

from datetime import datetime

dateString = "31/12/2013"
dateFormatter = "%d/%m/%Y"
datetime.strptime(dateString, dateFormatter)

出力は、

datetime.datetime(2013, 12, 31, 0, 0)

Mon, July 16 2018 フォーマット

from datetime import datetime

dateString = "31/12/2013"
dateFormatter = "%d/%m/%Y"
datetime.strptime(dateString, dateFormatter)

出力は、

datetime.datetime(2018, 7, 16, 0, 0)

Monday, July 16, 2018 20:01:56 フォーマット

from datetime import datetime

dateString = "Monday, July 16, 2018 20:01:56"
dateFormatter = "%A, %B %d, %Y %H:%M:%S"
datetime.strptime(dateString, dateFormatter)

出力は、

datetime.datetime(2018, 7, 16, 20, 1, 56)

関連記事 - Python String

  • Pythonic 方式で文字列が空であることを確認する方法
  • Python 文字列の空白を削除する方法
  • Python 2 および 3 で文字列を小文字に変換する方法
  • Python で文字列に部分文字列が含まれているかどうかを確認する方法
  • Python でリストを文字列に変換する方法
  • Python で文字列を浮動小数点または整数に変換する方法
  • Python で 1 行ずつリストに 1つのファイルを読み取る方法
  • Python で文字列をバイトに変換する方法
  • 関連記事 - Python datetime

  • Pythonic 方式で文字列が空であることを確認する方法
  • Python 文字列の空白を削除する方法
  • Python 2 および 3 で文字列を小文字に変換する方法
  • Python で文字列に部分文字列が含まれているかどうかを確認する方法
  • Python でリストを文字列に変換する方法
  • Python で文字列を浮動小数点または整数に変換する方法
  • Python で 1 行ずつリストに 1つのファイルを読み取る方法
  • Python で文字列をバイトに変換する方法
  • パンダで DataFrame 列を日時に変換する方法
  • Python で現在の時刻を取得する方法
  • comments powered by Disqus