0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

年金事務所が使用する日付形式を'yyyymmdd'形式に変換する

Last updated at Posted at 2021-03-27

年金事務所が発行する公文書(PDF形式)をOCRで読み取り、
社内システムに格納されているデータと一致しているかをチェックする作業をしています。

年金事務所の用いる日付形式は「元号コード-yymmdd」となっており、
例えば昭和50年12月31日であれば、「3-501231」と表されています。
一方社内システムは「yyyymmdd」形式のため、その形式に変換する必要があります。

元号コード
昭和:3
平成:4
令和:5

元号年から西暦を求めるには下記の計算を行います。
昭和:元号年に25を足し、さらに1900を加える
平成:元号年から12を引き、2000を加える
令和:元号年に18を足し、さらに2000を加える

上記を踏まえて、リストに格納した年金事務所日付データを変換します。

date_list = ['3-501231','4-101231','5-021231']
for cnt in range(len(date_list)):
    eracode = date_list[cnt][0]
    eray = int(date_list[cnt][2:4])
    if eracode == '3':
        yyyy = int(eray) + 25 + 1900
    elif eracode == '4':
        yyyy = int(eray) - 12 + 2000
    else:
        yyyy = int(eray) + 18 + 2000
    yyyymmdd = str(yyyy) + date_list[cnt][4:8]

関数化する場合

def gengo(erayymmdd):
    eracode = erayymmdd[0]
    eray = int(erayymmdd[2:4])
    if eracode == '3':
        yyyy = int(eray) + 25 + 1900
    elif eracode == '4':
        yyyy = int(eray) - 12 + 2000
    else:
        yyyy = int(eray) + 18 + 2000
    yyyymmdd = str(yyyy) + erayymmdd[4:8]
    return yyyymmdd

gengo('5-030101')
## 20210101

なお、このコードでは存在しない日付、例えば昭和64年1月10日(3-640110)であっても
特に判定は行わずに西暦に変換しています。

期間計算等を行うためにPython日付形式で取得したい場合は、
datetimeを使用しています。

from datetime import datetime as dt #datetimeをインポート

date_list = ['3-501231','4-101231','5-021231']

for cnt in range(len(date_list)):
    eracode = date_list[cnt][0]
    eray = int(date_list[cnt][2:4])
    if eracode == '3':
        yyyy = int(eray) + 25 + 1900
    elif eracode == '4':
        yyyy = int(eray) - 12 + 2000
    else:
        yyyy = int(eray) + 18 + 2000
    yyyymmdd = str(yyyy) + date_list[cnt][4:8]
    modify_yyyymmdd = dt.strptime(yyyymmdd,'%Y%m%d') #python日付形式に変換
    print(modify_yyyymmdd)

和暦・西暦の相互変換や大正以前の元号年を扱いたい場合は、
slangsoftさんのjeraconvを利用させて頂いております。
https://pypi.org/project/jeraconv/

0
3
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?