跳到内容
🛠️ToolsShed

财政年度计算器

计算任意日期的财政年度季度、开始/结束日期和进度。支持美国、英国、澳大利亚及自定义财政年度。

关于此工具

财务年度是组织用于会计处理、财务报告和预算编制的12个月期间。与日历年(1月至12月)不同,财务年度可以在任何日期开始和结束,这允许企业和政府将其财务周期与运营需求相协调。美国联邦政府使用10月1日至9月30日,英国使用4月6日至4月5日,澳大利亚使用7月1日至6月30日,每个选择都反映了独特的历史、法律或季节因素。

此财务年度计算器帮助您确定您所处的财务年度季度,并提供财务年度和当前季度的确切开始和结束日期。只需输入任意日期、选择财务年度开始月份(或选择常见预设,如美国联邦政府、英国或澳大利亚),该工具会立即计算财务年度名称、季度号、日期范围和进度指标。您还可以在年底命名(FY2025在2025年结束)和年初命名(FY2025在2024年开始)之间切换,以匹配您的组织的报告惯例。

此工具对于财务团队、会计师、业务分析师以及任何跟踪季度财务截止日期或计划跨季度项目的人来说都是必不可少的。无论您是在协调财务报告、制定季度目标,还是只是了解您在组织财务周期中的位置,此计算器都能立即清晰地显示您的财务位置和当前季度的剩余时间。

常见问题

代码实现

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