以下のような記述を作成したかったので、Pythonでやってみました。
2023-07-18 Tue
2023-07-19 Wed
コード
import datetime mylist = [f"2023-08-1{i}" for i in range(1, 6)] for i in mylist: hoge = i dte = datetime.datetime.strptime(hoge, '%Y-%m-%d') dte1 = dte.strftime('%a') dte2 = str(dte) new_date = datetime.datetime.strptime(dte2, '%Y-%m-%d %H:%M:%S').strftime('%Y/%m/%d') print(new_date, dte1) 2023/08/11 Fri 2023/08/12 Sat 2023/08/13 Sun 2023/08/14 Mon 2023/08/15 Tue
日付を作って、リストに入れる
日付をforループで作成します。mylistに格納します。参考にしたページも載せておきます。
mylist = [f"2023-08-1{i}" for i in range(1, 6)]
文字列を日付型に変換する
変数hogeにforループの展開を入れます。次に変数dteに文字列を日付型に変換して代入する。
for i in mylist: hoge = i dte = datetime.datetime.strptime(hoge, '%Y-%m-%d')
日付型から曜日を取得+日付型を文字列にする
dte1に関数(?)strftimeで曜日を代入します。
dte = datetime.datetime.strptime(hoge, '%Y-%m-%d') dte1 = dte.strftime('%a') dte2 = str(dte) new_date = datetime.datetime.strptime(dte2, '%Y-%m-%d %H:%M:%S').strftime('%Y/%m/%d') print(new_date, dte1)
TypeError: strptime() argument 1 must be str, not datetime.datetimeの対処法
https://qiita.com/S_eki/items/574402720355fc979622
ここでdte2に日付型から文字列型にします。TypeErrorが出たので、ググってこれをやります。
最後に出力
最初の行で2023-07-18 00:00:00を2023/07/18に形式変更します。そして出力。
new_date = datetime.datetime.strptime(dte2, '%Y-%m-%d %H:%M:%S').strftime('%Y/%m/%d') print(new_date, dte1)
これを作成するのに2時間くらいかかっていますが、身になったので良しとします。
こういうのもあります(2024/5/18)
from datetime import datetime from datetime import timedelta #指定期間の連日を作成する start = datetime.strptime('2024/05/01', '%Y/%m/%d').date() #.date()で時間の非表示 end = datetime.strptime('2024/06/30', '%Y/%m/%d').date() def daterange(_start, _end): for n in range((_end - _start).days): yield _start + timedelta(n) for i in daterange(start, end): print(i, i.strftime('%a')) #日付と日付から曜日を取得して表示