高校物理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 で四半期の開始日・終了日を取得する方法を解説します。

四半期とは

1年を3ヶ月ずつ4つに分けた期間です。一般的には以下のように区分します。

Q11月〜3月
Q24月〜6月
Q37月〜9月
Q410月〜12月

ただし会計年度によっては4月始まり(日本企業に多い)や10月始まりもあるので、用途に合わせて調整が必要です。

1月始まりの四半期

まずは暦年ベース(1月始まり)で四半期を計算してみます。

from datetime import date
import calendar

def get_quarter(d):
    """日付から四半期番号を取得(1〜4)"""
    return (d.month - 1) // 3 + 1

def quarter_range(year, quarter):
    """指定した四半期の開始日と終了日を取得"""
    start_month = (quarter - 1) * 3 + 1
    end_month = start_month + 2
    
    start_date = date(year, start_month, 1)
    end_day = calendar.monthrange(year, end_month)[1]
    end_date = date(year, end_month, end_day)
    
    return start_date, end_date

# 2025年 Q1
start, end = quarter_range(2025, 1)
print(f"Q1: {start}{end}")  # Q1: 2025-01-01 〜 2025-03-31

# 2025年 Q3
start, end = quarter_range(2025, 3)
print(f"Q3: {start}{end}")  # Q3: 2025-07-01 〜 2025-09-30

(month - 1) // 3 で 0〜3 の値が得られるので、1 を足して 1〜4 の四半期番号に変換しています。

特定の日付が属する四半期の範囲

日付を渡して、その日が含まれる四半期の範囲を取得する関数も便利です。

from datetime import date
import calendar

def get_current_quarter_range(d):
    """指定日が属する四半期の開始日と終了日を取得"""
    quarter = (d.month - 1) // 3 + 1
    start_month = (quarter - 1) * 3 + 1
    end_month = start_month + 2
    
    start_date = date(d.year, start_month, 1)
    end_day = calendar.monthrange(d.year, end_month)[1]
    end_date = date(d.year, end_month, end_day)
    
    return start_date, end_date

today = date(2025, 5, 15)
start, end = get_current_quarter_range(today)
print(f"現在の四半期: {start}{end}")
# 現在の四半期: 2025-04-01 〜 2025-06-30

4月始まりの会計年度

日本の多くの企業は4月始まりの会計年度を採用しています。

from datetime import date
import calendar

def fiscal_quarter(d, fiscal_start_month=4):
    """会計年度ベースの四半期番号を取得"""
    adjusted_month = (d.month - fiscal_start_month) % 12
    return adjusted_month // 3 + 1

def fiscal_quarter_range(fiscal_year, quarter, fiscal_start_month=4):
    """会計年度の四半期範囲を取得"""
    start_month = fiscal_start_month + (quarter - 1) * 3
    
    # 13月以上なら翌年
    if start_month > 12:
        start_month -= 12
        start_year = fiscal_year + 1
    else:
        start_year = fiscal_year
    
    end_month = start_month + 2
    if end_month > 12:
        end_month -= 12
        end_year = start_year + 1
    else:
        end_year = start_year
    
    start_date = date(start_year, start_month, 1)
    end_day = calendar.monthrange(end_year, end_month)[1]
    end_date = date(end_year, end_month, end_day)
    
    return start_date, end_date

# 2024年度(4月始まり)の Q1
start, end = fiscal_quarter_range(2024, 1)
print(f"2024年度 Q1: {start}{end}")
# 2024年度 Q1: 2024-04-01 〜 2024-06-30

# 2024年度の Q4(1〜3月なので2025年)
start, end = fiscal_quarter_range(2024, 4)
print(f"2024年度 Q4: {start}{end}")
# 2024年度 Q4: 2025-01-01 〜 2025-03-31

4月始まりの場合、Q4 は翌年の1〜3月になる点に注意してください。

四半期のリストを生成する

複数の四半期を一括で生成したい場合はジェネレータが便利です。

from datetime import date
import calendar

def generate_quarters(start_year, end_year):
    """指定期間の四半期を生成"""
    for year in range(start_year, end_year + 1):
        for quarter in range(1, 5):
            start_month = (quarter - 1) * 3 + 1
            end_month = start_month + 2
            
            start_date = date(year, start_month, 1)
            end_day = calendar.monthrange(year, end_month)[1]
            end_date = date(year, end_month, end_day)
            
            yield year, quarter, start_date, end_date

# 2024〜2025年の四半期を列挙
for year, q, start, end in generate_quarters(2024, 2025):
    print(f"{year} Q{q}: {start}{end}")

集計レポートの期間指定やグラフの軸ラベル生成などに活用できます。