计算财政年度的开始

时间:2011-06-24 09:14:46

标签: asp.net vb.net date

我们的财政年度从每年的4月1日开始。因此,本财政年度是2011年4月1日。

无论当前日期是什么,我如何获得此日期?

例如,今天是2011-06-24,我该如何回归2011-04-30。

如果今天是2012-02-05,我仍然需要它返回2011-04-30。但是,如果今天是2012-07-06,则应该返回2012-04-30。

基本上,财务日期的年份不应该改变到当前年份,直到达到5月1日。

即。一些例子

2011-03-05 = 2010-04-30
2011-04-06 = 2011-04-30
2010-01-15 = 2009-04-30
2015-09-01 = 2015-04-30
2020-12-25 = 2020-04-30
2021-02-26 = 2020-04-30

4 个答案:

答案 0 :(得分:4)

没有内置功能,但是很容易自己构建:

  • 获取当前日期
  • 如果是四月或以后,请使用年份并将月份和日期设定为1月1日
  • 如果是在4月之前,请使用前一年,再次使用4月1日。

答案 1 :(得分:3)

您可以简单地使用静态方法:

public static GetStartOfFinancialYear() {

    DateTime startOfYear = new DateTime( Datetime.UtcNow.Year, 4, 30 );
    return 
        DateTime.UtcNow < startOfYear ? 
            startOfYear.AddYears(-1) : startOfYear;

}
VB中的

public shared Function GetStartOfFinancialYear() As DateTime

    Dim startOfYear As New DateTime(DateTime.Now.Year, 4, 30)

    If DateTime.UtcNow < startOfYear Then
        return startOfYear.AddYears(-1) 
    Else
        return startOfYear
    End If

End Function 

答案 2 :(得分:1)

使用:

  Dim dateTime__1 As New DateTime(DateTime.Now.AddMonths(-4).Year, 4, 30)

答案 3 :(得分:0)

Time Period Library for .NET包括类,并支持财政时间段。

您可以使用自定义年度基准月定义会计时间日历。以下示例使用10月作为会计年度的开始:

// ------------------------------------------------------------------------
public class FiscalTimeCalendar : TimeCalendar
{
  // ----------------------------------------------------------------------
  public FiscalTimeCalendar() :
    base( new TimeCalendarConfig
      {
        YearBaseMonth = YearMonth.October,  //  October year base month
        YearWeekType = YearWeekType.Iso8601, // ISO 8601 week numbering
        YearType = YearType.FiscalYear// treat years as fiscal years
      } )
  {
  } // FiscalTimeCalendar
} // class FiscalTimeCalendar

这就是用法: 崩

// ----------------------------------------------------------------------
public void FiscalYearSample()
{
  FiscalTimeCalendar calendar = new FiscalTimeCalendar(); // use fiscal periods

  DateTime moment1 = new DateTime( 2006, 9, 30 );
  Console.WriteLine( "Fiscal Year of {0}: {1}", moment1.ToShortDateString(),
                     new Year( moment1, calendar ).YearName );
  // > Fiscal Year of 30.09.2006: FY2005
  Console.WriteLine( "Fiscal Quarter of {0}: {1}", moment1.ToShortDateString(),
                     new Quarter( moment1, calendar ).QuarterOfYearName );
  // > Fiscal Quarter of 30.09.2006: FQ4 2005

  DateTime moment2 = new DateTime( 2006, 10, 1 );
  Console.WriteLine( "Fiscal Year of {0}: {1}", moment2.ToShortDateString(),
                     new Year( moment2, calendar ).YearName );
  // > Fiscal Year of 01.10.2006: FY2006
  Console.WriteLine( "Fiscal Quarter of {0}: {1}", moment1.ToShortDateString(),
                     new Quarter( moment2, calendar ).QuarterOfYearName );
  // > Fiscal Quarter of 30.09.2006: FQ1 2006
} // FiscalYearSample

图书馆还包括半年季度类,并支持财政时间段。