ゆんの業務改善ブログ

①生産性向上 ②業務改善 ③自動化 について情報発信しています。VBAプログラムは本当初心者から他のアプリケーションを呼び出して使う上級者的な使い方まで幅広いレベルで解説していきます。

【Python】簡単に日付を操る|datetimeモジュール

ファイル名などに日付を入れておきたい時がありますよね。Pythonではdatetimeモジュールを使うことで簡単に日付を操作する事ができます。今回はdatetimeモジュールで日付の操作する方法を一緒に見て行きましょう。

目次

datetimeモジュールで簡単に日付を操る

習うより慣れろ、と言うわけで早速見て行きます。

datetimeモジュールの戻り値

datetimeモジュールをインポートして、現在のdatetimeの値を取得してみます。

import datetime
print(datetime.datetime.now())  # datetime.datetime(2019, 12, 29, 13, 16, 32, 148991)

このコードで行った事は下記の通りです。

  1. datetimeモジュールが使えるようにインポートした
  2. 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をご参照下さい。

datetimeモジュールで簡単に日付を操る方法まとめ

datetimeモジュールについてまとめると下記の通りです

  • datetimeモジュールはdatetimeオブジェクトを持つ
  • datetimeオブジェクトは年、月、日、時、分、秒、マイクロ秒のプロパティをもつ
  • datetimeオブジェクトのプロパティは自分で設定することもできる
  • 使い所としてはファイルを保存する時のファイル名に本日の日付をつけるような場面が考えられる

以上、datetimeモジュールで日付を簡単に操る方法でした。