記事内に広告が含まれています。

【Python】英語式の年月日を日本式に変換する方法:datetime

【Python】英語式の年月日を日本式に変換する方法 IT
IT

Pythonで
英語の年月日、例として『February 10, 2024』のような形を、
日本の年月日、『2024年02月10日』として変換する方法です。

英語のページをスクレイピングしリストアップした時に、日本語に変換する必要がありました。
以下備忘録として残します。

スポンサーリンク
     

英語式の年月日を日本式に変換する

最初にその方法を書いておきます。

from datetime import datetime

# 英語の日付文字列
english_date_str = "February 10, 2024"

# 英語の日付文字列を datetime オブジェクトに変換
english_date = datetime.strptime(english_date_str, "%B %d, %Y")

# 日本の日付文字列に変換
japanese_date_str = english_date.strftime("%Y年%m月%d日")

print(japanese_date_str)  # 出力結果: 2024年02月10日

コードの説明

  • from datetime import datetime
    datetime モジュールから datetime クラスを直接インポートします。これにより、datetime クラスを datetime という名前で直接使用できるようになります。
  • english_date = datetime.strptime(english_date_str, “%B %d, %Y”)
    strptime() メソッドを使用して、english_date_str という文字列を datetime オブジェクトに変換します。
    strptime() メソッドは、文字列を指定した形式に従って解析し、datetime オブジェクトを返します。
    第1引数には変換する文字列を、第2引数にはその文字列の形式を示すフォーマット文字列を指定します。
    ここでは、”%B %d, %Y” というフォーマット文字列を使用しており、これは月名(”%B”)、日(”%d”)、年(”%Y”)の順番で指定されています。
  • japanese_date_str = english_date.strftime(“%Y年%m月%d日”)
    strftime() メソッドを使用して、english_date という datetime オブジェクトを日本の日付文字列に変換します。
    strftime() メソッドは、datetime オブジェクトを指定した形式の文字列に変換します。
    第1引数には変換する形式を示すフォーマット文字列を指定します。
    ここでは、”%Y年%m月%d日” というフォーマット文字列を使用しており、これは年(”%Y”)、月(”%m”)、日(”%d”)の順番で指定されています。
     

日本式の年月日から英語式の年月日に変換する

次は逆の変換方法です。

英語→日本のコードの説明を読んでいただければご自分で作成可能だと思いますが、面倒な人のために残しておきます。
コピペして使ってください。

from datetime import datetime

# 日本の日付文字列
japanese_date_str = "2024年02月10日"

# 日本の日付文字列を datetime オブジェクトに変換
japanese_date = datetime.strptime(japanese_date_str, "%Y年%m月%d日")

# 英語の日付文字列に変換
english_date_str = japanese_date.strftime("%B %d, %Y")

print(english_date_str)  # 出力結果: February 10, 2024

【おまけ】ebayの商品一覧ページの販売した日付をdatetime オブジェクトに変換

ebayで終了済み商品を検索した際、販売した日付が英語になっています。
それを色々いじりたい時に不便だったので、datetime オブジェクトに変換する必要がありました。

これも作る機会があったのでついでに乗っけておきます。
ブサイクですが一応使えます。

import datetime
import re

def convert_ebay_sold_date(date_str):
    # 日付文字列を適切な形式に分割
    parts = re.split('  | |, | ,', date_str)  # 空白1個・空白2個・空白+コンマで文字列を分割
    parts.pop(0)  # "販売済み"を削除

    # 日付の文字列を結合して正しい形式に変換
    formatted_date_str = parts[1] + parts[0] + parts[2]

    # 正しい形式の日付文字列を datetime オブジェクトに変換して返す
    return datetime.datetime.strptime(formatted_date_str, "%d%b%Y")