Pythonで文字列を日付型datetimeに変換する

Pythonでは文字列を日付型に変換することができます。

今回は、Pythonで文字列から日付型「datetime」 に変換する方法を解説します。

文字列を日付型datetimeに変換する方法

Pythonで文字列を日付に変換する方法をいくつかのパターンにわけて解説します。

区切り文字なしの文字列をdatetimeに変換

import datetime

str = '20180801'
dte = datetime.datetime.strptime(str, '%Y%m%d')
print(dte)
#[結果] 2018-08-01 00:00:00

ここでは日付文字列の区切り文字なし「20180801」のパターンを「datetime」へ変換しました。

文字列を「datetime」に変換するには、「datetime」の「strptime」を使います。第一引数に変換したい文字列、第2引数に変換後のフォーマット「%Y%m%d」を指定します。

「Y」は西暦4桁なので大文字、「m」「d」は小文字なので注意してください。

日付フォーマット

日付を指定するフォーマットはこちらです。

書式 説明
%Y 年 西暦4桁(例、2018)
%y 年 西暦2桁(例、18)
%m 月2桁(例、12)
%d 日2桁(例、31)
%H 時 24時間表記(例、14)
%I 時 12時間表記(例、02)
%p AM、PM
%M 分2桁
%S 秒2桁
%f マイクロ秒6桁

 

スラッシュ「/」つきの文字列をdatetimeに変換

import datetime

str = '2018/08/01'
dte = datetime.datetime.strptime(str, '%Y/%m/%d')
print(dte)
#[結果] 2018-08-01 00:00:00

ここでは日付文字列でスラッシュ区切りの「2018/08/01」のパターンを「datetime」へ変換しました。

第2引数の変換後のフォーマットにスラッシュを入れて「%Y/%m/%d」とすると変換できます。

ハイフン「-」つきの文字列をdatetimeに変換

import datetime

str = '2018-08-01'
dte = datetime.datetime.strptime(str, '%Y-%m-%d')
print(dte)
#[結果] 2018-08-01 00:00:00

ここでは日付文字列でハイフン区切りの「2018-08-01」のパターンを「datetime」へ変換しました。

第2引数の変換後のフォーマットにハイフンを入れて「%Y-%m-%d」とすると変換できます。

日付+時間の文字列をdatetimeに変換

import datetime

str = '2018-08-01 17:10:45'
dte = datetime.datetime.strptime(str, '%Y-%m-%d %H:%M:%S')
print(dte)
#[結果] 2018-08-01 17:10:45

ここでは日付だけでなく時間も含んだ文字列の「2018-08-01 17:10:45」のパターンを「datetime」へ変換しました。

第2引数の変換後のフォーマットに時間・分・秒を追加し、「%Y-%m-%d %H:%M:%S」とすると変換できます。

時間「H」、分「M」、秒「S」はすべて大文字なので注意してください。

参考ページhttps://docs.python.org/3/library/datetime.html?highlight=datetime#strftime-and-strptime-behavior

これで様々な形式の文字列を日付「datetime」に変換することができました。

以上、Pythonで文字列から日付に変換する方法でした。

コメント