🛠️ToolsShed

Mali Yıl Hesaplayıcı

Herhangi bir tarih için mali yıl çeyreği, başlangıç/bitiş tarihleri ve ilerlemeyi hesaplar. ABD, İngiltere, Avustralya ve özel mali yılları destekler.

Sıkça Sorulan Sorular

Kod Uygulaması

# 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.