ファイル名などに日付を入れておきたい時がありますよね。Pythonではdatetimeモジュールを使うことで簡単に日付を操作する事ができます。今回はdatetimeモジュールで日付の操作する方法を一緒に見て行きましょう。
目次
datetimeモジュールで簡単に日付を操る
習うより慣れろ、と言うわけで早速見て行きます。
datetimeモジュールの戻り値
datetimeモジュールをインポートして、現在のdatetimeの値を取得してみます。
import datetime print(datetime.datetime.now()) # datetime.datetime(2019, 12, 29, 13, 16, 32, 148991)
このコードで行った事は下記の通りです。
- datetimeモジュールが使えるようにインポートした
- datetimeモジュールのdatetimeオブジェクトが持っている、now()関数を呼び出した
実行結果として、実行した瞬間の、年、月、時、分、秒、マイクロ秒の値が格納されたdatetimeモジュールのdatetimeオブジェクトが返ってきた、と言うわけです。私の場合は、datetime.datetime(2019, 12, 29, 13, 16, 32, 148991)が返ってきました。この戻り値について具体的に見て行きましょう。
datetimeオブジェクトの中身
前項でdatetime.datetime.now()の実行結果としてdatetimeオブジェクトが返る事が分かりました。そのオブジェクトは年、月、日と言ったプロパティを持っていました。それぞれのプロパティを取り出してみます。
import datetime dt = datetime.datetime.now() print(dt.year) #2019 print(dt.month) #12 print(dt.day) #29 print(dt.hour) #13 print(dt.minute) #33 print(dt.second) #35 print(dt.microsecond) #137709 print(dt) #2019-12-29 13:33:35.137709
dtという変数を用意して、そこにdatetimeオブジェクトを格納し、各プロパティを出力しました。比較のためにdtも出力しました。確かにそれぞれのプロパティごとに取り出すことができています。
datetimeオブジェクトにプロパティを設定する
前項では現在の日次を格納したdatetimeオブジェクトを取得し、内容を確認しました。自分でそれぞれのプロパティを設定する事もできます。まずは簡単に数字をベタ打ちで作ってみます。
import datetime dt = datetime.datetime(2050, 1, 1) print(dt) #2050-01-01 00:00:00
適当に2050年1月1日のdatetimeオブジェクトを作成し、表示させてみました。このようにプロパティは存在する月や日付の数字の範囲で自由に設定してdatetimeオブジェクトを生成する事ができます。
日付の計算の具体的なサンプル
せっかくなので実用的なサンプルを一つ提示したいと思います。エクセルに本日の日付をつけて保存します。
import openpyxl as xl import datetime dt = datetime.datetime.now()) filename_str = 'sample_' + str(dt.year) + str(dt.month) + str(dt.day) + '.xlsx' # sample_20191229.xlsx wb = xl.load_workbook('sample.xlsx') wb.save(filename_str)
str関数は値の型を文字列型に変換する関数です。dt.yearなどdatetimeオブジェクトのプロパティは整数型なので、そのままでは文字連結ができずにエラーになってしまいます。そこで、str関数で文字列型に置き換えています。
エクセルファイルを取り扱うためにopenpyxlというモジュールを利用しています。openpyxlモジュールに関しては、PythonでExcelデータを操作する|openpyxlをご参照下さい。