ソフトモヒカンの勉強と開発の記録

サービス開発を目指して、プログラミングの勉強とコーディングをしています。本ブログは、そのログになります!

【Python】現在の年月日を"YYYYMMDD"形式で取得しようとした話

プログラム実行時の年月日を"YYYYMMDD"形式の文字列で取得

開発環境

macOS High Sierra(バージョン10.13.5)
Python3.6.4
Sublime Text

前提条件

ファイルに日付で名前をつけたり、ログファイルに日付ごとに項目を入れる時のために便利な関数として作ってみました。

ソースコード

以下がソースコードになります。
結末から言うと、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"などの曜日の文字列も返す。

 返されるときは、タプル型として返される。

 世の中、便利なものがあちこち転がってるものなんですね。感謝感謝!