Skip to content
🛠️ToolsShed

Fiscal Year Calculator

Calculate fiscal year quarter, start/end dates, and progress for any date. Supports US, UK, Australian, and custom fiscal years.

About this tool

A fiscal year is the 12-month period that organizations use for accounting, financial reporting, and budgeting. Unlike the calendar year (January through December), a fiscal year can start and end on any dates, allowing companies and governments to align their financial cycles with their operational needs. The US Federal Government uses October 1 to September 30, the UK uses April 6 to April 5, and Australia uses July 1 to June 30—each choice reflecting unique historical, legal, or seasonal factors.

This fiscal year calculator helps you determine which fiscal year quarter you're in and provides exact start and end dates for both the fiscal year and the current quarter. Simply enter any date, choose a fiscal year start month (or select a common preset like US Federal, UK, or Australian), and the tool instantly calculates the fiscal year name, quarter number, date ranges, and progress metrics. You can also toggle between end-of-year naming (FY2025 ending in 2025) and start-of-year naming (FY2025 starting in 2024) to match your organization's reporting convention.

This tool is essential for finance teams, accountants, business analysts, and anyone tracking fiscal deadlines or planning projects across quarters. Whether you're reconciling financial reports, setting quarterly goals, or simply understanding where you stand in your organization's financial cycle, this calculator provides instant clarity on your fiscal position and remaining time in the current quarter.

Frequently Asked Questions

Code Implementation

# Fiscal Year Calculator
from datetime import date, timedelta

def get_fiscal_year(d: date, fy_start_month: int, naming_end: bool = True) -> dict:
    """
    Calculate fiscal year details for a given date.
    fy_start_month: 1=Jan, 2=Feb, ..., 10=Oct, etc.
    """
    month = d.month
    year = d.year

    # Determine FY start year
    if month >= fy_start_month:
        fy_start = date(year, fy_start_month, 1)
    else:
        fy_start = date(year - 1, fy_start_month, 1)

    # FY end date (one day before next FY start)
    fy_end_year = fy_start.year + 1
    fy_end = date(fy_end_year, fy_start_month, 1) - timedelta(days=1)

    # FY name
    fy_name = f"FY{fy_end_year}" if naming_end else f"FY{fy_start.year}"

    # Quarter
    months_from_start = (month - fy_start_month) % 12
    quarter = months_from_start // 3 + 1

    # Quarter start/end
    q_start_month = (fy_start_month + (quarter - 1) * 3 - 1) % 12 + 1
    q_start_year = fy_start.year + ((fy_start_month + (quarter - 1) * 3 - 1) // 12)
    q_start = date(q_start_year, q_start_month, 1)
    q_end_month = (q_start_month + 2) % 12 + 1
    if q_end_month == 1:
        q_end = date(q_start_year + 1, 1, 1) - timedelta(days=1)
    else:
        q_end = date(q_start_year, q_start_month + 3, 1) - timedelta(days=1)

    total_days = (fy_end - fy_start).days + 1
    elapsed = (d - fy_start).days
    remaining = total_days - elapsed
    progress = round(elapsed / total_days * 100)

    return {
        "fy_name": fy_name,
        "quarter": quarter,
        "fy_start": fy_start.isoformat(),
        "fy_end": fy_end.isoformat(),
        "q_start": q_start.isoformat(),
        "q_end": q_end.isoformat(),
        "days_elapsed": elapsed,
        "days_remaining": remaining,
        "progress_pct": progress,
    }

# Examples
today = date.today()
print("US Federal (Oct):", get_fiscal_year(today, 10, naming_end=True))
print("UK (Apr):", get_fiscal_year(today, 4, naming_end=True))
print("Australia (Jul):", get_fiscal_year(today, 7, naming_end=True))

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.