Pythonで日付の取得を検討します。
まずはdatetimeをimportします。
import datetime
datetime.datetime.now(tz=None) datetime.datetime.today() ------------------------------ 2023-06-25 09:49:17.260890
now()はタイムゾーンを指定しなければtoday()と同じです。(引数を空欄にしてもOK)
isoformat()を付けると国際規格のISOで定められた表記になります。
datetime.datetime.now().isoformat() datetime.datetime.today().isoformat() ------------------------------ 2023-06-25T09:49:17.276434
date()を付けると年月日の表示になります。
datetime.datetime.now().date() ------------------------------ 2023-06-25
これもISO表記にすることができます。
datetime.datetime.now().date().isoformat() ------------------------------ 2023-06-25
日付けや時刻などを部分的に抽出することもできます。
dt_now = datetime.datetime.now() print(dt_now) print(dt_now.year) print(dt_now.month) print(dt_now.day) print(dt_now.hour) print(dt_now.minute) print(dt_now.second) print(dt_now.microsecond) ------------------------------ 2023-06-25 09:49:17.323832 2023 6 25 9 49 17 323832
逆に日付の変数から読み込むこともできますが注意が必要です。
我が家の犬の誕生日で実行してみます。
dt_birth = '2018-3-12' #愛犬の誕生日 print(dt_birth) print(type(dt_birth)) ------------------------------ 2018-3-12 <class 'str'>
datetime.date.fromisoformat(dt_birth) ------------------------------ ValueError: Invalid isoformat string: '2018-3-12'
3月を3と表記するとエラーになります。
03とするとエラーは回避できます。
dt_birth_fix = '2018-03-12' datetime.date.fromisoformat(dt_birth_fix) ------------------------------ 2018-03-12
ハイフンなしの日付けの文字列も読み込めたようですが、公式ドキュメントで
3.11のバージョン以降はYYYY-MM-DDの形だけの対応と記載がありました。
自分のPythonのバージョンは3.9.10でしたが、エラーでした。
dt_birth_2 = '20180312' datetime.date.fromisoformat(dt_birth_2) ------------------------------ ValueError: Invalid isoformat string: '20180312'
自分は証券口座やネットバンクから自分の資産を取得し、PandasのDataFrameに格納、CSVで吐き出す
プログラムを作成し、週に1回実行して自分の資産の推移を確認しています。
そのファイル名に取得した日付を入れることでいつに取得したファイルか識別できるように
しています。
dt_now = datetime.datetime.now() date_str = dt_now.date().isoformat() date_str output_filename = 'output' + date_str + '.csv' assets_df.to_csv(output_filename, encoding='utf_8')