如何计算定义了自定义财务日历的两个日期之间的月数?

问题描述 投票:2回答:1

我已经定义了自定义财务日历。有时一个月可以是28天,有时也可以是35天。每个月的开始会有所不同。 (可以从10/15/20日开始)

要引用哪个日历日期引用哪个财务日期,我定义了一个具有以下列结构的表:Financial Calendar

在上表中,您可以看到fiscalmonth P1是指日期20190125。(可能是fiscalmonth-P120190115开始到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 / ...开始>

java java-8 java-time fiscal
1个回答
2
投票

AccountingChronologyJava 8及更高版本中的

框架默认使用基于ISO 8601的年表。但是,该年表是pluggable捆绑了其他四个年表实现:Hijrah,日语,Minguo和ThaiBuddhist。这些基础是java.time.chrono.Chronology接口和java.time.chrono.Chronology类。

java.time.chrono.AbstractChronology库为

java.time

添加了更多功能。这包括提供java.time.chrono.AbstractChronology

其中之一是ThreeTen-Extra。根据您定义财政日历的方式(您忽略在“问题”中记录的内容),此实现可能满足您的需求。此年表的设计遵循several more Chronology implementationsChronology中规定的52/53周财务日历规则。

由于每个公司都可以使用日历来定义这种时间顺序,因此我们需要AccountingCalendar来定义我们自己公司的定义。使用构建器,我们指定:

    结束星期几-给定会计年度结束的星期几。
  • 每月的末尾与最近的月末-结束的星期几是该月的最后一天,还是最接近月末的日期(有时会在下个月。
  • 月末-该年结束于/最接近的公历/ ISO月末。
  • 年划分-将会计年度划分为多少个“月”(期间),以及每个星期中有几周。
  • le周月份-哪个月份将添加the周。实际上,这可能是最后一个,但这似乎不是必需的。
  • 然后生成器对象生成一个AccountingCalendar供我们在我们的应用中使用。
  • 从那里我们可以产生IRS Publication 538对象。此类似乎具有许多功能。在此类上注意方法International Financial Reporting Standards。在开始日期之前,您需要提供一个结束日期,然后您将获得一个AccountingChronologyBuilder对象。这样一来,您便可以获取会计月份或会计周的计数。我不确定,因为我从未使用此会计年表进行任何工作。

FYI,在此会计年表实现中似乎还涉及其他几个类:AccountingChronologyBuilderAccountingChronology

© www.soinside.com 2019 - 2024. All rights reserved.