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("その他")
なんだこのコードってなりますよね。普通に
Pythonなら簡単に和暦にできると思った甘い考えの結果
がこのコードです。もっと勉強が必要なので頑張ります。
スライスは文字列しか使えない
西暦の二桁(2020年なら20年)を取り出そうと思いました。インデックスでスライスした場合、2:4を指定すればいけるのでそのままやってみました。
Pythonは日付のデータ型だとそもそもスライスできないというのを知りませんでした。
文字列は減算ができない
日付の型(date型)は減算ができるのですが、文字列になると減算ができませんでした。これも知らなかったので勉強になりました。。。
文字列(str)と数値型は結合できない
謎なprint祭り。文字列とdate型は結合できないので考えが必要でした。
思ったより和暦って難しい
簡単にできるかなーと思った自分、馬鹿ですね。型とかいろいろ考えないとこうなります。
悪しき例として残しておきました。皆さんは参考にしないでください。