- java.lang.Object
-
- org.threeten.extra.chrono.AccountingChronologyBuilder
-
public final class AccountingChronologyBuilder extends Object
Builder to create Accounting calendars.Accounting calendars require setup before use, given how they are used. The following information is required:
- ending day-of-week - The day-of-week on which a given accounting year ends.
- last-in-month vs. nearest-end-of-month - Whether the ending day-of-week is the last in the month, or the nearest to the end of the month (will sometimes be in the next month.
- month end - Which Gregorian/ISO end-of-month the year ends in/is nearest to.
- year division - How many 'months' (periods) to divide the accounting year into, and how many weeks are in each.
- leap-week month - Which month will have the leap 'week' added to it. In practice this is probably the last one, but this does not seem to be required.
- year start/end offset - Whether the fiscal year starts or ends in the similarly numbered ISO year. If nearest-end-of-month is set and the ending month is December, the effective offset will shift over time.
There are approximately 7 x 2 x 12 x 4 x 12/13 x 2 = 8064 combinations.
Implementation Requirements
This class is a mutable builder suitable for use from a single thread.
-
-
Constructor Summary
Constructors Constructor Description AccountingChronologyBuilder()
Constructs a new instance of the builder.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description AccountingChronologyBuilder
accountingYearEndsInIsoYear()
Sets the proleptic accounting year to end in the matching Iso year.AccountingChronologyBuilder
accountingYearStartsInIsoYear()
Sets the proleptic accounting year to start in the matching Iso year.AccountingChronologyBuilder
endsOn(DayOfWeek endsOn)
Sets the day-of-week on which a given Accounting calendar year ends.AccountingChronologyBuilder
inLastWeekOf(Month end)
Sets the Gregorian/ISO month-end in which a given Accounting calendar year ends.AccountingChronologyBuilder
leapWeekInMonth(int leapWeekInMonth)
Sets the month in which the leap-week occurs.AccountingChronologyBuilder
nearestEndOf(Month end)
Sets the Gregorian/ISO month-end which a given Accounting calendar year ends nearest to.AccountingChronology
toChronology()
Completes this builder by creating theAccountingChronology
.AccountingChronologyBuilder
withDivision(AccountingYearDivision division)
Sets how a given Accounting year will be divided.
-
-
-
Method Detail
-
endsOn
public AccountingChronologyBuilder endsOn(DayOfWeek endsOn)
Sets the day-of-week on which a given Accounting calendar year ends.- Parameters:
endsOn
- The day-of-week on which a given Accounting calendar year ends.- Returns:
- this, for chaining, not null.
-
nearestEndOf
public AccountingChronologyBuilder nearestEndOf(Month end)
Sets the Gregorian/ISO month-end which a given Accounting calendar year ends nearest to. Calendars setup this way will occasionally end in the start of the next month. For example, for July, the month ends on any day from July 28th to August 3rd.- Parameters:
end
- The Gregorian/ISO month-end a given Accounting calendar year ends nearest to.- Returns:
- this, for chaining, not null.
-
inLastWeekOf
public AccountingChronologyBuilder inLastWeekOf(Month end)
Sets the Gregorian/ISO month-end in which a given Accounting calendar year ends. Calendars setup this way will always end in the last week of the given month. For example, for July, the month ends on any day from July 25th to July 31st.- Parameters:
end
- The Gregorian/ISO month-end a given Accounting calendar year ends in the last week of.- Returns:
- this, for chaining, not null.
-
withDivision
public AccountingChronologyBuilder withDivision(AccountingYearDivision division)
Sets how a given Accounting year will be divided.- Parameters:
division
- How to divide a given calendar year.- Returns:
- this, for chaining, not null.
-
leapWeekInMonth
public AccountingChronologyBuilder leapWeekInMonth(int leapWeekInMonth)
Sets the month in which the leap-week occurs.- Parameters:
leapWeekInMonth
- The month in which the leap-week occurs.- Returns:
- this, for chaining, not null.
-
accountingYearEndsInIsoYear
public AccountingChronologyBuilder accountingYearEndsInIsoYear()
Sets the proleptic accounting year to end in the matching Iso year.- Returns:
- this, for chaining, not null.
-
accountingYearStartsInIsoYear
public AccountingChronologyBuilder accountingYearStartsInIsoYear()
Sets the proleptic accounting year to start in the matching Iso year.- Returns:
- this, for chaining, not null.
-
toChronology
public AccountingChronology toChronology()
Completes this builder by creating theAccountingChronology
.- Returns:
- the created chronology, not null.
- Throws:
DateTimeException
- if the chronology cannot be built.
-
-