![見出し画像](https://assets.st-note.com/production/uploads/images/28885695/rectangle_large_type_2_0b70e76a64c8b1ae9fb7b7e4ff49276b.jpeg?width=1200)
Photo by
lazy_planet
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型は結合できないので考えが必要でした。
思ったより和暦って難しい
簡単にできるかなーと思った自分、馬鹿ですね。型とかいろいろ考えないとこうなります。
悪しき例として残しておきました。皆さんは参考にしないでください。
この記事が気に入ったらサポートをしてみませんか?