スクリプトのお勉強

(小ネタ) python3 date_range + step付き

投稿日:

ちょっと前に同じような感じのネタを。。

したような気がするのだが、まぉおいておこう。。

素のPython3で、日付にてfor文を回す方法

日付で分割して処理をしたいと思うときがあります。
例えば、2022/04/23から、2022/06/1までの日付を3日毎に、処理したいとかが考えられます。

思ったより面倒で、なんとなくdateutilでやりたくなりますが、ライブラリを導入できないとします。

date_range関数

で、いろいろを参考に書いてみたのが以下です。

from datetime import date, timedelta


def date_range(start, stop, step = timedelta(1)):
    current = start
    while current <= stop:
        yield current
        current += step

    if current < stop + step:
        yield stop

# 呼び出しサンプル
print("timedelta=3");

start_date = date(2021,12,21)
end_date = date(2022,3,2)

for i, dt in enumerate(date_range(start_date, end_date, timedelta(3)):
    print(dt.strftime("%Y-%m-%d"))

動作結果は以下になります。

timedelta=3
2021-12-21
2021-12-24
2021-12-27
2021-12-30
2022-01-02
2022-01-05
2022-01-08
2022-01-11
2022-01-14
2022-01-17
2022-01-20
2022-01-23
2022-01-26
2022-01-29
2022-02-01
2022-02-04
2022-02-07
2022-02-10
2022-02-13
2022-02-16
2022-02-19
2022-02-22
2022-02-25
2022-02-28
2022-03-02

書いておいてなんですが、よく分かってない。

いまだにyieldってよく分かってません。もちろんループでちょいちょい戻るのは分かるのですが、どこで使っていいかを判断する基準が分かってません。

まぁ動くからいいことにしよう。。

参考

https://stackoverflow.com/questions/7274267/print-all-day-dates-between-two-dates/7274316

-スクリプトのお勉強

執筆者:

関連記事

FastAPIでAPIを作ってみる(その1)

勉強として、FastAPIを使用して、実際にAPIを作成し、起動しようと思います。目標としては、本番運用用の設定まで行いたいと思います。 FastAPIとは FastAPIとは、Pythonによる、W …

fastapi + SQLAlchemy で CRUDアプリケーションを作ってみる

概要 勉強用に、PythonでPostgresqlを制御しようと思います。の続きです。 前回でPostgreSQLと、データベース/テーブルまでは用意したので、今回はAPIを作成しようと思います。 実 …

Vue.jsをbetter jQueryとして使う!FastAPI+Vue.jsと生成AIで作る住所録アプリ

昔あるところに。。 昔、jquery全盛で、Vue.jsが出てきたすぐに「これはjqueryを駆逐できるかも」と思ってjqueryの実装をVue.jsに変えようとしたことがあります。 結局全部を変えた …

Dockerを使用してGo言語の開発環境を構築する

なんとなくGolangのブロジェクトに機能追加しようと思いました。 Golangの開発用に、Dockerfile等を準備する手順を書いておこうと思います。 サンプルにnfpm サンプルとして、Fork …

Certbot(snap版)の起動が失敗した件

certbotの起動が失敗した 小ネタです。 なぜかSSL証明書が更新されず、Let’s Encrypt Expiry Botからたくさんメールが来るなーと思ったらcertbotの起動が失 …

    google オプトアウト Click here to opt-out.