【Python】現在の年月日を"YYYYMMDD"形式で取得しようとした話
プログラム実行時の年月日を"YYYYMMDD"形式の文字列で取得
前提条件
ファイルに日付で名前をつけたり、ログファイルに日付ごとに項目を入れる時のために便利な関数として作ってみました。
ソースコード
以下がソースコードになります。
結末から言うと、srtftimeという関数を使用すると、このコードがとても簡単になります。
#コード1:修正前 import os from datetime import datetime from pytz import timezone #現在の年月日を取得 def presentDay(): today = datetime.now(timezone('Asia/Tokyo')); year = today.year; year = str(year); month = today.month; if not month > 9: month = str(month); month = "0" + month; else: month = str(month); day = today.day; if not day > 9: day = str(day); day = "0" + day; else: day = str(day); return year + month + day;#文字列で、YYYYMMDDを返す
- まずは、必要なライブラリをインポート。
- today = datetime.now(timezone('Asia/Tokyo'));
東京の現在の年月日、時分秒、曜日までが
”2018-06-09 21:05:02.219407+09:00”
というdatetimeオブジェクトの形でtodayの中に格納。
また、
"weekday = today.weekday();"
で、weekdayに曜日が数字の形で格納されます(0〜6:月〜日曜日)。
- year = str(year);
年をdatetimeオブジェクトから、str型にします。
- その下のif文について
月、日については、1桁の場合、0をつけて2桁にしてから文字列になおします。
- return year+month+day;
文字列連結をして、returnで返す。
できたー!と思ったところ、strftimeでもっと簡単に書けた。。。
#コード2:修正後 from datetime import datetime from pytz import timezone #現在の年月日を取得 def presentDay(): today = datetime.now(timezone('Asia/Tokyo')); presentday = today.strftime("%Y%m%d"); weekday = today.strftime("%a"); return presentday, weekday;
- returnで、"YYYYMMDD"文字列と"Mon"などの曜日の文字列も返す。
返されるときは、タプル型として返される。
世の中、便利なものがあちこち転がってるものなんですね。感謝感謝!