Pythonで文字列を日時に変換する | プログラミング学習 初心者向け入門ガイド

ホーム › >>

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

記事掲載:https://laptrinhcanban.com/ja

Python で文字列を日時に変換する方法のチュートリアル。このレッスンの後、pythonで strptime() メソッドを使用して文字列を datetime に変換する方法と、python で datetime形式テーブルを使用して出力時刻をフォーマットする方法を学習します。

pythonの strptime() メソッドを使用して、Python で文字列を日時に変換できます。場合に応じて、日時出力を文字列の入力形式と同じ形式にすることも、まったく異なる形式にすることもできます。Python で文字列を datetime に変換した後、元の文字列に記録された時間を計算できます。たとえば、Python で日付を加算および減算したり、datetime から日付と時刻を取得したりできます。

尚、反対のことをしたい場合は、次の記事を参照してください: Pythonで日時を文字列に変換する.

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

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

Python datetime モジュールの strptime() メソッドを使用して、日付と時刻の値を含む文字列を解析し、次の構文でその文字列を Python datime に変換できます。

datetime.strptime(date_string, format)

そこで:

  • datetime.strptimeは、メソッド名を指定するために使用されます
  • date_stringは、 format で指定された形式で記述された日付と時刻の値を含む文字列です。
  • formatは、date_string 文字列および出力の日付形式です

形式 format は、文字列で使用される時刻形式と一致する必要があることに注意してください。たとえば、文字列で2020/07/22 10:4:38” は、形式を として指定する必要があります”%Y/%m/%d %H:%M:%S”。そうしないと、プログラムの実行時にエラーが発生します。

Python 文字列の日付形式テーブル

Python の日付形式は、以下の Python 文字列の日付形式表を使用して指定されます。

FormatÝ nghĩa
%y2 桁の年 00, 01, …, 99
%Y4 桁の月 0001, 0002, …, 9999
%b月名の略称 Jan, Feb, …, Dec ※1
%B月の名前 January, February, …, December ※1
%m1月、2月、…、12
%d1 日目、2 日目、…、31 日目
%H時間 (24 時間) 00, 01, …, 23
%I時(12 時間) 00, 01, …, 11
%p午前または午後 ※1
%M分 00, 01, …, 59
%S秒 00, 01, …, 59
%fマイクロ秒 000000, 000001, …, 999999
%zタイムゾーン, +0000, -0400 etc
%Zタイムゾーン UTC, EST

※1: 設定したローカルにより適宜値が変化します。ロケールの指定については、 python datetime でロケールを指定の記事を参照してください。

ここでは、次のように Python で文字列を日時に変換する方法の具体的な例を見ていきます。

同じ入力形式と出力形式で文字列をPythonで日時に変換します

Python 文字列の日付形式テーブルを介して、時間情報を含む文字列と、その文字列に時間を書き込む方法に対応する形式があるとします。次のように、この文字列を対応する時刻形式に変換します。

import datetime

date_str = "2020/07/22 10:4:38"
date_format = "%Y/%m/%d %H:%M:%S"

dt = datetime.datetime.strptime(date_str,date_format)
print(type(dt))
print(dt)

#>> <class 'datetime.datetime'>
#>> 2020-07-22 10:04:38

その他の例:

import datetime

str1 = "2020/07/22 13:37:4:33217"
str2 = "07/22/2020 PM 1:37:4:33217"
str3 = "July 22,2020 13:37:4:33217+09:00"

dt1 = datetime.datetime.strptime(str1, "%Y/%m/%d %H:%M:%S:%f")
dt2 = datetime.datetime.strptime(str2, "%m/%d/%Y %p %I:%M:%S:%f")
dt3 = datetime.datetime.strptime(str3, "%B %d,%Y %H:%M:%S:%f%z")

print(dt1)
#>> 2020-07-22 13:37:04.332170
print(dt2)
#>> 2020-07-22 13:37:04.332170
print(dt3)
#>> 2020-07-22 13:37:04.332170+09:00

その文字列に一致するように文字列文字列の形式を指定する必要があることに注意してください。文字列のフォーマットがフォーマットと異なる場合、ValueError が発生します。

import datetime

date_str = "2020/15/22 10:4:38"
date_format = "%Y/%m/%d %H:%M:%S"
dt = datetime.datetime.strptime(date_str, date_format)

戻りエラー:

ValueError: time data '2020/15/22 10:4:38' does not match format '%Y/%m/%d %H:%M:%S'

異なる入力形式と出力形式で文字列をPythonで日時に変換します

前のセクションで、元の文字列で使用されている時間形式と一致するように文字列の形式を指定する必要があることを学びました。

これにより、文字列の形式とはまったく異なる形式で日時を作成することが難しくなります。たとえば、元の文字列には の形式”Wednesday, May 04, 2021”がありますが、datetime には2020/15/22 10:4:38たとえばその形式が必要です。

この場合、元の文字列を datetime に変換した後、取得した datetime を別の形式の文字列に変換する処理を追加し、その別の形式の文字列を datetime に変換して最終結果を取得する必要があります。

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

strftime() メソッドを次の手順と組み合わせて使用します。
ステップ 1: Python で文字列を日時に変換する

import datetime

date_str = 'Wednesday, May 04, 2021'
date_format= '%A, %B %d, %Y'
result_format= '%Y/%m/%d'
date_dt = datetime.datetime.strptime(date_str, date_format)
print(type(date_dt))
print(date_dt)
#>> <class 'datetime.datetime'>
#>> 2021-05-04 00:00:00

ステップ 2: 結果の日時を別の形式の文字列に変換する

#Thay đổi định dạng datetime trong python
date_dt_str = date_dt.strftime(result_format)

print(type(date_dt_str))
print(date_dt_str)
#>> <class 'str'>
#>> 2021/05/04

ステップ 3: 別の形式の文字列を datetime に変換し、最終結果を取得する

date_dt_result =  datetime.datetime.strptime(date_dt_str, result_format)
print(type(date_dt_result))
print(date_dt_result)
#>> <class 'datetime.datetime'>
#>> 2021-05-04 00:00:00

要約すると、次のコードを記述します。

import datetime

date_str = 'Wednesday, May 04, 2021'
date_format= '%A, %B %d, %Y'
result_format= '%Y/%m/%d'

date_dt = datetime.datetime.strptime(date_str, date_format)
date_dt_str = date_dt.strftime(result_format)
date_dt_result = datetime.datetime.strptime(date_dt_str, result_format)

print(type(date_dt_result))
print(date_dt_result)
#>> <class 'datetime.datetime'>
#>> 2021-05-04 00:00:00

Pythonで文字列をdatetimeに変換した後に時間を計算する

python で string を datetime に変換した後、元の string の時刻情報は datetime 形式に変換されているので、この datetime で計算を実行できます。

たとえば、次のように datetime から日付と時刻を取得できます。

import datetime
dt = datetime.datetime.strptime("2020/07/22 10:4:38","%Y/%m/%d %H:%M:%S")

print(dt.year)
#>> 2020

print(dt.minute)
#>> 4

次のように、結果の日時で日付を加算および減算することもできます。

import datetime
dt = datetime.datetime.strptime("2020/07/22 10:4:38","%Y/%m/%d %H:%M:%S")

dt2 = dt + datetime.timedelta(days=1)
print(dt2)
#>> 2020-07-23 10:04:38

dt3 = dt - datetime.timedelta(days=8)
print(dt3)
#>> 2020-07-14 10:04:38

まとめ

上記 Kiyoshi は、python で string を datetime に変換する方法を案内しました。レッスンの内容をよりよく理解するために、今日の例を書き直す練習をしてください。

文字列と日時を変換したい場合は、Python で日時を文字列に変換するの記事を参照してください。

URL Link

https://laptrinhcanban.com/ja/python/nhap-mon-lap-trinh-python/datetime-trong-python/chuyen-string-sang-datetime-trong-python/

この記事は役立つと思ったらいいね!とシェアをお願いします
">

ホーム  › >>

Profile
きよしです!笑

Author: Kiyoshi (Chis Thanh)

Kiyoshi was a former international student in Japan. After graduating from Toyama University in 2017, Kiyoshi is currently working as a BrSE in Tokyo, Japan.