# Basic Usage

`fiscalyear` provides several useful classes.

## FiscalYear

The `FiscalYear` class provides an object for storing information about the start and end of a particular fiscal year.

    >>> from fiscalyear import *
    >>> a = FiscalYear(2017)
    >>> a.start
    FiscalDateTime(2016, 10, 1, 0, 0)
    >>> a.end
    FiscalDateTime(2017, 9, 30, 23, 59, 59)
    >>> a.isleap
    False

You can also get the current `FiscalYear` with:

    >>> FiscalYear.current()
    FiscalYear(2018)

## FiscalQuarter

The `FiscalYear` class also allows you to query information about a specific fiscal quarter.

    >>> a.q3.start
    FiscalDateTime(2017, 4, 1, 0, 0)
    >>> a.q3.end
    FiscalDateTime(2017, 6, 30, 23, 59, 59)

These objects represent the standalone `FiscalQuarter` class.

    >>> b = FiscalQuarter(2017, 3)
    >>> b.start
    FiscalDateTime(2017, 4, 1, 0, 0)
    >>> b.end
    FiscalDateTime(2017, 6, 30, 23, 59, 59)
    >>> a.q3 == b
    True
    >>> b in a
    True
    >>> b.next_fiscal_quarter
    FiscalQuarter(2017, 4)

You can also get the current `FiscalQuarter` with:

    >>> FiscalQuarter.current()
    FiscalQuarter(2018, 2)

## FiscalMonth

The `FiscalMonth` class allows you to keep track of the fiscal month.

    >>> c = FiscalMonth(2017, 9)
    >>> c.start
    FiscalDateTime(2017, 6, 1, 0, 0)
    >>> c.end
    FiscalDateTime(2017, 6, 30, 23, 59, 59)
    >>> c in a
    True
    >>> c in b
    True
    >>> c.next_fiscal_month
    FiscalMonth(2017, 10)

You can also get the current `FiscalMonth` with:

    >>> FiscalMonth.current()
    FiscalMonth(2018, 4)

## FiscalDay

To keep track of the fiscal day, use the `FiscalDay` class.

    >>> d = FiscalDay(2017, 250)
    >>> d.start
    FiscalDateTime(2017, 6, 6, 0, 0)
    >>> d.end
    FiscalDateTime(2017, 6, 6, 23, 59, 59)
    >>> d in a
    True
    >>> d in b
    True
    >>> d in c
    True
    >>> d.next_fiscal_day
    FiscalDay(2017, 251)

You can also get the current `FiscalDay` with:

    >>> FiscalDay.current()
    FiscalDay(2018, 94)

## FiscalDateTime

The start and end of each of the above objects are stored as instances of the `FiscalDateTime` class. This class provides all of the same features as the `datetime` class, with the addition of the ability to query the fiscal year, fiscal quarter, fiscal month, and fiscal day.

    >>> e = FiscalDateTime.now()
    >>> e
    FiscalDateTime(2017, 4, 8, 20, 30, 31, 105323)
    >>> e.fiscal_year
    2017
    >>> e.fiscal_quarter
    3
    >>> e.next_fiscal_quarter
    FiscalQuarter(2017, 4)
    >>> e.fiscal_month
    7
    >>> e.fiscal_day
    190

## FiscalDate

If you don’t care about the time component of the `FiscalDateTime` class, the `FiscalDate` class is right for you.

    >>> f = FiscalDate.today()
    >>> f
    FiscalDate(2017, 4, 8)
    >>> f.fiscal_year
    2017
    >>> f.prev_fiscal_year
    FiscalYear(2016)