java 中的 4-4-5 会计日历
4-4-5 accounting calendar in java
我必须在 java 中使用 4-4-5 会计日历。
我正在寻找一种方法,在给定当前月份的特定日期的情况下,获得相应的会计月份。
例如,对于 2020 年,我将有以下会计月份:
29-Dec 25-Jan
26-Jan 22-Feb
23-Feb 28-Mar
29-Mar 25-Apr
26-Apr 23-May
24-May 27-Jun
28-Jun 25-Jul
26-Jul 22-Aug
23-Aug 26-Sep
27-Sep 24-Oct
25-Oct 21-Nov
22-Nov 26-Dec
所以,例如,给定一个日期 4 月 28 日,我需要收到这样的东西:
26-Apr 23-May
我还尝试将 ThreeTen-Extra 项目与 AccountingChronology 和 AccountingChronologyBuilder 一起使用。但是,说真的,我很难理解如何使用它。
使用 ThreeTen-Extra 库很容易获得这些日期。
定义你的年表。实例化一个 AccountingChronology
by using AccountingChronologyBuilder
. Specify the attributes that fit your particular business practices. Notice how we specify 4-4-5 via the AccountingYearDivision
.
AccountingChronology acctChrono = new AccountingChronologyBuilder()
.endsOn(DayOfWeek.SATURDAY)
.inLastWeekOf(Month.DECEMBER)
.withDivision(AccountingYearDivision.QUARTERS_OF_PATTERN_4_4_5_WEEKS)
.leapWeekInMonth(12)
.toChronology();
使用该年表来实例化 AccountingDate
. Use a TemporalAdjuster
从一个日期移动到另一个日期。
for (int month = 1; month <= 12; month++) {
AccountingDate start = acctChrono.date(2020, month, 1);
AccountingDate end = start.with(TemporalAdjusters.lastDayOfMonth());
System.out.println(start.format(DateTimeFormatter.ISO_LOCAL_DATE) + " "
+ end.format(DateTimeFormatter.ISO_LOCAL_DATE));
}
输出
2019-12-29 2020-01-25
2020-01-26 2020-02-22
2020-02-23 2020-03-28
2020-03-29 2020-04-25
2020-04-26 2020-05-23
2020-05-24 2020-06-27
2020-06-28 2020-07-25
2020-07-26 2020-08-22
2020-08-23 2020-09-26
2020-09-27 2020-10-24
2020-10-25 2020-11-21
2020-11-22 2020-12-26
我必须在 java 中使用 4-4-5 会计日历。
我正在寻找一种方法,在给定当前月份的特定日期的情况下,获得相应的会计月份。
例如,对于 2020 年,我将有以下会计月份:
29-Dec 25-Jan
26-Jan 22-Feb
23-Feb 28-Mar
29-Mar 25-Apr
26-Apr 23-May
24-May 27-Jun
28-Jun 25-Jul
26-Jul 22-Aug
23-Aug 26-Sep
27-Sep 24-Oct
25-Oct 21-Nov
22-Nov 26-Dec
所以,例如,给定一个日期 4 月 28 日,我需要收到这样的东西:
26-Apr 23-May
我还尝试将 ThreeTen-Extra 项目与 AccountingChronology 和 AccountingChronologyBuilder 一起使用。但是,说真的,我很难理解如何使用它。
使用 ThreeTen-Extra 库很容易获得这些日期。
定义你的年表。实例化一个 AccountingChronology
by using AccountingChronologyBuilder
. Specify the attributes that fit your particular business practices. Notice how we specify 4-4-5 via the AccountingYearDivision
.
AccountingChronology acctChrono = new AccountingChronologyBuilder()
.endsOn(DayOfWeek.SATURDAY)
.inLastWeekOf(Month.DECEMBER)
.withDivision(AccountingYearDivision.QUARTERS_OF_PATTERN_4_4_5_WEEKS)
.leapWeekInMonth(12)
.toChronology();
使用该年表来实例化 AccountingDate
. Use a TemporalAdjuster
从一个日期移动到另一个日期。
for (int month = 1; month <= 12; month++) {
AccountingDate start = acctChrono.date(2020, month, 1);
AccountingDate end = start.with(TemporalAdjusters.lastDayOfMonth());
System.out.println(start.format(DateTimeFormatter.ISO_LOCAL_DATE) + " "
+ end.format(DateTimeFormatter.ISO_LOCAL_DATE));
}
输出
2019-12-29 2020-01-25
2020-01-26 2020-02-22
2020-02-23 2020-03-28
2020-03-29 2020-04-25
2020-04-26 2020-05-23
2020-05-24 2020-06-27
2020-06-28 2020-07-25
2020-07-26 2020-08-22
2020-08-23 2020-09-26
2020-09-27 2020-10-24
2020-10-25 2020-11-21
2020-11-22 2020-12-26