この記事では、Pythonで文字列を日付型に変換する方法と、日付型から文字列に変換する方法を解説します。
さらに、よく使われる日付フォーマットの例や注意点とエラーハンドリングについても紹介します。
初心者の方でもわかりやすく、サンプルコードと実行結果の例を交えて解説していきます。
Pythonでの文字列から日付型への変換方法
Pythonでは、文字列を日付型に変換するために、datetimeモジュールを利用することができます。
以下では、datetimeモジュールを使った文字列から日付型への変換方法について解説します。
datetimeモジュールの利用
まずは、datetimeモジュールをインポートします。
import datetime
strftimeメソッドを使ったフォーマット指定
strftimeメソッド
を使うことで、日付型を指定したフォーマットの文字列に変換することができます。
以下は、日付型を指定したフォーマットの文字列に変換する例です。
import datetime
# 現在の日付を取得
now = datetime.datetime.now()
# 日付型を指定したフォーマットの文字列に変換
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_date)
2023-11-18 07:38:15
strptimeメソッドを使った文字列から日付型への変換
strptimeメソッド
を使うことで、文字列を指定したフォーマットの日付型に変換することができます。
以下は、文字列を指定したフォーマットの日付型に変換する例です。
import datetime
# 文字列を指定したフォーマットの日付型に変換
date_string = "2022-01-01"
date = datetime.datetime.strptime(date_string, "%Y-%m-%d")
print(date)
2022-01-01 00:00:00
以上がPythonでの文字列から日付型への変換方法です。
datetimeモジュールの利用やstrftimeメソッド
、strptimeメソッド
の使い方を理解することで、日付型と文字列の相互変換がスムーズに行えるようになります。
日付型から文字列への変換方法
Pythonでは、日付型から文字列への変換も簡単に行うことができます。
ここでは、strftimeメソッド
を使ったフォーマット指定と、日本語表記や曜日の取得について解説します。
strftimeメソッドを使ったフォーマット指定
strftimeメソッド
は、日付型のオブジェクトに対して特定のフォーマットを指定して文字列に変換するためのメソッドです。
以下は、strftimeメソッド
を使って日付型を文字列に変換する例です。
import datetime
# 現在の日付を取得
today = datetime.date.today()
# フォーマット指定して文字列に変換
formatted_date = today.strftime("%Y年%m月%d日")
print(formatted_date)
2023年11月18日
上記の例では、%Y
は年を4桁で表示し、%m
は月を2桁で表示、%d
は日を2桁で表示することを指定しています。
これにより、現在の日付が「2022年01月01日」という形式の文字列に変換されます。
日本語表記や曜日の取得
strftimeメソッド
を使うことで、日本語表記や曜日の取得も簡単に行うことができます。
以下は、日本語表記や曜日の取得の例です。
import datetime
import locale
# ロケールを日本語に設定
locale.setlocale(locale.LC_TIME, 'ja_JP.UTF-8')
# 現在の日付を取得
today = datetime.date.today()
# 日本語表記で文字列に変換
formatted_date = today.strftime("%Y年%m月%d日")
# 曜日の取得
weekday = today.strftime("%A")
print(formatted_date)
print(weekday)
2023年11月18日
土曜日
上記の例では、locale.setlocale(locale.LC_TIME, 'ja_JP.UTF-8')
によってロケールを日本語に設定しています。
これにより、日本語表記での曜日の取得が可能になります。
また、%A
を使うことで、曜日を文字列として取得することができます。
環境によっては文字化けする
ロケールを変更して%A
を使って曜日の出力する方法ですが、開発環境によっては文字化けが発生します。ですので、環境依存のない曜日の取得を行いたい場合は、以下のように関数を作成するといいでしょう。
import datetime
# weekdayの値を使って曜日を日本語で取得する関数
def weekday_to_japanese(weekday,is_full=False):
weekdays = ["月", "火", "水", "木", "金", "土", "日"]
return weekdays[weekday] + is_full * "曜日"
# 現在の日付を取得
today = datetime.date.today()
# 日本語表記で文字列に変換
formatted_date = today.strftime("%Y年%m月%d日")
# 曜日の取得
weekday = weekday_to_japanese(today.weekday(),False)
weekday_full = weekday_to_japanese(today.weekday(),True)
print(formatted_date)
print(weekday)
print(weekday_full)
2023年11月18日
土
土曜日
こちらのコードは環境依存のない曜日取得処理なので、どの環境でも月曜日
や火曜日
などの日本語表記の曜日を取得できます。
以上が、日付型から文字列への変換方法です。
よく使われる日付フォーマットの例
日付や時刻を表現する際には、特定のフォーマットを指定することが一般的です。
Pythonでは、datetimeモジュールのstrftimeメソッド
を使って、日付や時刻を指定したフォーマットで表示することができます。
以下では、よく使われる日付フォーマットの例を紹介します。
年月日のフォーマット
年月日を表現する際には、次のようなフォーマットを使用することがあります。
%Y
: 4桁の年 (例: 2022)%m
: 2桁の月 (01から12)%d
: 2桁の日 (01から31)
例えば、現在の日付を「年-月-日」の形式で表示するには、以下のようなコードを使用します。
import datetime
now = datetime.datetime.now()
formatted_date = now.strftime("%Y-%m-%d")
print(formatted_date)
2023-11-18
実行結果は、例えば 2022-01-01
となります。
時刻のフォーマット
時刻を表現する際には、次のようなフォーマットを使用することがあります。
%H
: 24時間表記の時 (00から23)%M
: 分 (00から59)%S
: 秒 (00から59)
例えば、現在の時刻を「時:分:秒」の形式で表示するには、以下のようなコードを使用します。
import datetime
now = datetime.datetime.now()
formatted_time = now.strftime("%H:%M:%S")
print(formatted_time)
07:49:17
実行結果は、例えば 12:34:56
となります。
曜日のフォーマット
曜日を表現する際には、次のようなフォーマットを使用することがあります。
%A
: 完全な曜日名 (例: Monday)%a
: 短縮された曜日名 (例: Mon)
例えば、現在の曜日を「曜日名」の形式で表示するには、以下のようなコードを使用します。
import datetime
now = datetime.datetime.now()
formatted_weekday = now.strftime("%A")
print(formatted_weekday)
Saturday
実行結果は、例えば Saturday
となります。
以上が、よく使われる日付フォーマットの例です。
これらのフォーマットを使って、日付や時刻を柔軟に表現することができます。
注意点とエラーハンドリング
日付型への変換において、不正な日付文字列が与えられた場合やエラーが発生した場合の処理方法について説明します。
不正な日付文字列の処理
不正な日付文字列が与えられた場合、strptimeメソッド
はValueError
を発生させます。
このエラーをハンドリングするために、try-except文
を使用します。
以下は、不正な日付文字列が与えられた場合にエラーメッセージを表示する例です。
import datetime
date_string = "2022-13-01" # 不正な日付文字列
try:
date = datetime.datetime.strptime(date_string, "%Y-%m-%d")
print("日付:", date)
except ValueError:
print("不正な日付文字列です")
不正な日付文字列です
この例では、strptimeメソッド
がValueError
を発生させる可能性があるため、try
ブロック内で処理を行い、エラーが発生した場合にはexcept
ブロック内のコードが実行されます。
エラーハンドリングの方法
日付型への変換において、エラーが発生した場合のハンドリング方法は、try-except文
を使用する方法以外にもあります。
例えば、dateutil
モジュールのparserクラス
を使用することで、より柔軟なエラーハンドリングが可能です。
以下は、dateutil.parser
を使用したエラーハンドリングの例です。
from dateutil import parser
date_string = "2022-13-01" # 不正な日付文字列
try:
date = parser.parse(date_string)
print("日付:", date)
except parser.ParserError:
print("不正な日付文字列です")
不正な日付文字列です
dateutil.parser.parseメソッド
は、与えられた文字列を解析して日付型に変換します。
エラーが発生した場合には、ParserError
を発生させます。
このエラーをハンドリングすることで、不正な日付文字列の処理が行えます。
以上が、注意点とエラーハンドリングに関する解説です。
不正な日付文字列の処理やエラーハンドリングの方法を適切に行うことで、プログラムの安定性を確保することができます。