高校物理160203 views
高校国語788336 views
高校化学2924392 views
雑学1473612 views
高校日本史190571 views
小学社会310485 views
英語613639 views
小学算数1200427 views
りんご209490 views
高校生物551766 views
Help
Tools
NewsSpreadsheetCalendarSlidesTier ListPen ToolIllustrationCrayonPixel ArtASCII ArtPerspectiveEndless StairsGraphMind MapER DiagramFamily TreeMemeCurved TextImage EditorMosaicRetro FilterPencil SketchOCR/HighlighterMakeup EditorFaviconVideo TrimmerScrolling VideoVideo TitleColor PickerColor ExtractorBonfireFireworksWater RippleWater SplashBreaking GlassWood GrainMarble TextureCSS ButtonIcon MakerBar ChartGrouped Bar ChartStacked Bar ChartPie ChartLine ChartArea ChartStacked Area ChartScatter Plot3D Bar Chart3D Pie ChartBar Chart RaceBubble ChartPopulation PyramidPictogramEarningsCandlestick ChartInvestment RiskMortgage SimulatorCalculatorMatrix CalculatorFunction GraphPolynomial ExpansionVenn DiagramField VisualizerRubik's Cube Group TheoryTraveling SalesmanVoronoi and DelaunayFractalColumn ArithmeticDraw Math FiguresArithmetic AnimationArithmetic Word ProblemsCounting with Tree DiagramsCube NetsCross SectionsMotion PathMechanicsWavesLight and LensesThermodynamicsHow Semiconductors WorkMolecular StructuresAtomic OrbitalsElectrochemical CellsChemical EquilibriumCrystal LatticesBuffer pHComplex IonsDNA Double HelixCell DivisionMembrane ChannelsNerve ImpulseRock ClassificationWeatherConstellationsSolar and Lunar Eclipses3D ModelingFloor PlanSeismic StructuresIntersection TurnMaglevCooking AnimationOrigamiLive Viewer CountGeoJSON MapRailway MapPopulation MapCrime MapLand Price MapSchool MapShrine and Castle MapHouse of Representatives MapWord MapSolitaireReversiHakoiri MusumeChessHamburgerRippleSlide Puzzle MakerNeon PinballNovel MakerJapanese Typing PracticePiano Score EditorMusic Theory

English

Python で日付が「今月」「今週」「今日」かを判定する

「この日付は今日か?」「今週中か?」「今月か?」といった判定は、フィルタリングや表示切り替えでよく使います。Python での実装方法をパターン別に見ていきましょう。

今日かどうかを判定する

date.today() と比較するのが最もシンプルです。

from datetime import date, datetime

today = date.today()
target_date = date(2025, 1, 15)

if target_date == today:
    print("今日です")
else:
    print("今日ではありません")

datetime オブジェクトの場合は、date() メソッドで日付部分を取り出して比較します。

from datetime import date, datetime

today = date.today()
target_dt = datetime(2025, 1, 15, 14, 30, 0)

if target_dt.date() == today:
    print("今日です")

時刻の違いを無視して日付だけで判定したいときに使うパターンです。

今週かどうかを判定する

「今週」の定義は用途によって異なりますが、月曜始まりの週で判定する例を示します。

from datetime import date, timedelta

def get_week_range(d):
    """指定日を含む週の月曜と日曜を返す"""
    monday = d - timedelta(days=d.weekday())
    sunday = monday + timedelta(days=6)
    return monday, sunday

today = date.today()
monday, sunday = get_week_range(today)

target = date(2025, 1, 15)
if monday <= target <= sunday:
    print("今週です")
else:
    print("今週ではありません")

weekday() は月曜が 0、日曜が 6 を返すため、当日から weekday() 日分を引けば週の月曜日が得られます。

今月かどうかを判定する

年と月が一致するかを確認します。

from datetime import date

today = date.today()
target = date(2025, 1, 15)

if target.year == today.year and target.month == today.month:
    print("今月です")
else:
    print("今月ではありません")

もう少し汎用的に、月の範囲を取得する関数を作ることもできます。

from datetime import date
import calendar

def get_month_range(d):
    """指定日を含む月の初日と末日を返す"""
    first_day = d.replace(day=1)
    last_day_num = calendar.monthrange(d.year, d.month)[1]
    last_day = d.replace(day=last_day_num)
    return first_day, last_day

today = date.today()
first, last = get_month_range(today)
print(f"今月: {first}{last}")

calendar.monthrange() は指定月の日数を返してくれるので、末日の取得に便利です。

判定関数をまとめる

よく使う判定をユーティリティ関数としてまとめておくと再利用しやすくなります。

from datetime import date, timedelta
import calendar

def is_today(d):
    return d == date.today()

def is_this_week(d):
    today = date.today()
    monday = today - timedelta(days=today.weekday())
    sunday = monday + timedelta(days=6)
    return monday <= d <= sunday

def is_this_month(d):
    today = date.today()
    return d.year == today.year and d.month == today.month

# 使用例
target = date(2025, 1, 15)
print(f"今日?: {is_today(target)}")
print(f"今週?: {is_this_week(target)}")
print(f"今月?: {is_this_month(target)}")

日曜始まりにしたい場合

ISO 標準では月曜始まりですが、日曜始まりで週を扱いたい場合もあります。

from datetime import date, timedelta

def get_week_range_sunday_start(d):
    """日曜始まりの週範囲を返す"""
    # weekday(): 月=0, 日=6 なので、日曜始まりなら +1 して 7 で割る
    days_since_sunday = (d.weekday() + 1) % 7
    sunday = d - timedelta(days=days_since_sunday)
    saturday = sunday + timedelta(days=6)
    return sunday, saturday

today = date.today()
sunday, saturday = get_week_range_sunday_start(today)
print(f"今週(日曜始まり): {sunday}{saturday}")

業務要件に合わせて週の開始日を調整してください。