Разработка начала финансового года - PullRequest
2 голосов
/ 24 июня 2011

Наш финансовый год начинается 1 апреля каждого года.Поэтому текущий финансовый год - 1 апреля 2011 года.

Как получить эту дату независимо от текущей даты?

Например, сегодня 2011-06-24, какЯ возвращаюсь 2011-04-30.

Если сегодня 2012-02-05, мне все еще нужно вернуть 2011-04-30.Однако, если сегодня 2012-07-06, он должен вернуть 2012-04-30.

Таким образом, год финансовой даты не должен меняться на текущий, пока не будет достигнуто первое мая.

т.е. некоторые примеры

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 ]

4 голосов
/ 24 июня 2011

Встроенной функции нет, однако создать ее самостоятельно:

  • Получить текущую дату
  • Если это апрель или позже, используйте год и установите месяц и день 1 апреля
  • Если это до апреля, используйте годом ранее, снова 1 апреля.
3 голосов
/ 24 июня 2011

Вы можете просто использовать статический метод:

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 
1 голос
/ 24 июня 2011

Используйте:

  Dim dateTime__1 As New DateTime(DateTime.Now.AddMonths(-4).Year, 4, 30)
0 голосов
/ 24 июня 2011

Библиотека периодов времени для .NET включает класс Год с поддержкой финансовых периодов времени.

Вы можете определить календарь финансового времени с пользовательским базовым месяцем. В следующем примере октябрь используется в качестве начала финансового года:

// ------------------------------------------------------------------------
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

Библиотека включает также классы Полугодовой и Квартальный с поддержкой финансовых периодов времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...