見出し画像

Python文字の扱いで失敗

ある日ふと思いました。西暦を和暦にするのはPythonなら簡単にできるのかな?と試行錯誤をした結果、考えが甘いなとなりました。

コード

import datetime
now = datetime.date.today()
now2 = datetime.date.today()
#now = datetime.date(2019,5,1)
# 令和の日付
reiwa_year = datetime.date(2019,5,1)


if now >= reiwa_year:
    #print("令和")
     #日付の変換     reiwa = now.year % 100 - 18  #100で割ることで下二桁出す      #reiwa = reiwa.strftime('%Y')
    now = now.strftime('%Y年%m-%d')
    now2 = now2.strftime('%m-%d')
    print (now + "は") 
    print ("令和")
    print(reiwa)
    print("年")
    print(now2)
     #令和の計算 = 西暦3桁- 018
else:
   print("その他")

なんだこのコードってなりますよね。普通に

スクリーンショット 2020-06-23 4.28.12

Pythonなら簡単に和暦にできると思った甘い考えの結果

がこのコードです。もっと勉強が必要なので頑張ります。

スライスは文字列しか使えない

西暦の二桁(2020年なら20年)を取り出そうと思いました。インデックスでスライスした場合、2:4を指定すればいけるのでそのままやってみました。
Pythonは日付のデータ型だとそもそもスライスできないというのを知りませんでした。

文字列は減算ができない

日付の型(date型)は減算ができるのですが、文字列になると減算ができませんでした。これも知らなかったので勉強になりました。。。

文字列(str)と数値型は結合できない

謎なprint祭り。文字列とdate型は結合できないので考えが必要でした。

思ったより和暦って難しい

簡単にできるかなーと思った自分、馬鹿ですね。型とかいろいろ考えないとこうなります。

悪しき例として残しておきました。皆さんは参考にしないでください。

この記事が気に入ったらサポートをしてみませんか?