#背景と問題点
勤怠管理の日付を自動で入れるスクリプトあれば便利だな−と思い、
pythonのdatetimeモジュールのstrptimeを使って下記のように書いていた。
Kinkyu.py
input_date = input('作成する年月度を入力して下さい(例:201608):')
try:
month_first = datetime.datetime.strptime(input_date, '%Y%m')
except ValueError:
input('年月を201608のように入力して下さい。')
sys.exit()
すると、年月度を入力した時に下記エラー発生。
month_first = datetime.datetime.strptime(input_date, '%y%m')
TypeError: must be string, not int
#原因
あれ?と思って調べてみたら、
どうやらstrptimeの第1引数は文字列が入るとのこと。
数値じゃだめなのね・・・
#対処法
int型がNGならString型に変換してあげればよいのでは?と思い、
下記のようにに変更してみた。
Kinkyu.py
input_date = input('作成する年月度を入力して下さい(例:201608):')
input_date = str(input_date) #変更点:数値を文字列に変換
try:
month_first = datetime.datetime.strptime(input_date, '%Y%m')
except ValueError:
input('年月を201608のように入力して下さい。')
sys.exit()
これで解決。pythonだと型変換も楽で良い。
#参考リンク
-
8.1. datetime — 基本的な日付型および時間型(python標準ライブラリより)
https://docs.python.jp/3/library/datetime.html -
Pythonで文字列からdatetimeオブジェクトを生成する(Python3.3)
http://qiita.com/BarutanGNE/items/b14bef93c004f90c0ce4