我已经定义了自定义财务日历。有时一个月可以是28天,有时也可以是35天。每个月的开始会有所不同。 (可以从10/15/20日开始)
要引用哪个日历日期引用哪个财务日期,我定义了一个具有以下列结构的表:
在上表中,您可以看到fiscalmonth
P1
是指日期20190125。(可能是fiscalmonth-P1
从20190115
开始到20190215
的情况>
此表在数据库中。我正在研究Java部分,以创建功能,该功能将根据提供的两个会计日期(将参考上表的Periodbetween
列)返回yyyymmdd
对象以起作用。
public class PeriodBetween { private int days; private int weeks; private int months; private int quarters; private int years; //getters & setters }
此
periodBetween
对象提供有关这两个日期之间的天数/周数/月数/季度数的更多信息。public PeriodBetween between(int startDate, int endDate)
我正在研究要构建的东西,就像Java的java.time.Period.between
函数中的东西一样。但是无法通过引用上面定义的表来获得最佳的方法。
让我知道是否已经存在类似的东西,或者除了使用Financial Calendar
表之外还有其他方法。
更新:有时日历驾驶室为28天或35天的情况取决于客户遵循哪个日历。因此,根据客户,将填充Financial Calendar Table
。
财政日历是不可预测的。它将根据需要预先填充在表中。是的,Fiscal Calendar Table
跟随52以及52周的支持。因此,为了给您带来更高层次的想法,将根据客户使用哪种类型的自定义日历来填充表格。
我现在如何定义日历?从客户那里获得关于他们如何定义日历的要求。使用我填充上面提到的表并在所有地方使用该表。因此,假设在财务日历中我想找出什么是3rd day of P3 month on Financial year 2018
。然后,我对该表的查询将是在这一天提取更多信息,将是:select * from financial_calendar where fiscaldayofmonth=3 and fiscalmonth=P3 and fiscalyear=Financial Year 2018
我计算两个日期之间的月数的想法是使用两个日期之间的子句从表中提取信息并将数据大小除以30。这是不正确的。
我已经定义了自定义财务日历。有时一个月可以是28天,有时也可以是35天。每个月的开始会有所不同。 (它可以从10/15 / ...开始>
AccountingChronology
Java 8及更高版本中的java.timejava.time.chrono.Chronology
接口和java.time.chrono.Chronology
类。java.time.chrono.AbstractChronology
库为java.time.chrono.AbstractChronology
。
Chronology
implementations和Chronology
中规定的52/53周财务日历规则。 由于每个公司都可以使用日历来定义这种时间顺序,因此我们需要AccountingCalendar
来定义我们自己公司的定义。使用构建器,我们指定:
AccountingCalendar
供我们在我们的应用中使用。 从那里我们可以产生IRS Publication 538对象。此类似乎具有许多功能。在此类上注意方法International Financial Reporting Standards。在开始日期之前,您需要提供一个结束日期,然后您将获得一个AccountingChronologyBuilder
对象。这样一来,您便可以获取会计月份或会计周的计数。我不确定,因为我从未使用此会计年表进行任何工作。
FYI,在此会计年表实现中似乎还涉及其他几个类:AccountingChronologyBuilder
和AccountingChronology
。