スクリプトのお勉強

(小ネタ) 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

-スクリプトのお勉強

執筆者:

関連記事

(小ネタ) Reflex (Python) にてタブ形式のlinkを設定する

小ネタですが書いておきます。 Reflex とは、は割愛 前回に書いたので割愛します。 使い始めてみた 感想は後日、ということで 本題、タブ形式のlinkメニュー たいていのUIコンポーネントにはタブ …

Djangoアプリサンプル – 画像ファイルアップロード + 顔モザイク(統合編)

顔モザイク Djangoアプリ 前々回 前回 を統合して、Djangoアプリを作成してみようと思います。 前提インストール 前回、ubuntu 18を前提に記述しましたが、CentOS7(CentOS …

WSL2 と Dev Container で実現する快適な Python 開発環境

WSL2 と Dev Container で実現する快適な Python 開発環境 はじめに こんにちは!今回は、WSL2 (Windows Subsystem for Linux 2) と Visu …

Nuxt.js + Element + Responderでのtableサンプル作成

1. はじめに 最近、Webアプリケーションを作成する仕事が、少しずつですがあります。その際に使用するのは、殆どの場合「テーブル」です。 素のtableタグを駆使して作成した場合、テーブル内のセルにも …

Nginx AccessLog AI 分析レポート (2026-08-12)

概要 Nginxアクセスログの直近数百行を分析しました。この期間のログからは、多数の検索クローラーや一般ユーザーによる正常なアクセスに加え、WordPressサイトを標的とした自動化された脆弱性スキャ …

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