Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.0.x will end 8 May 2023 (12 months).
  • Bug fixes for security issues in 4.0.x will end 13 November 2023 (18 months).
  • PHP version: minimum PHP 7.3.0 Note: the minimum PHP version has increased since Moodle 3.10. PHP 7.4.x is also supported.

Differences Between: [Versions 400 and 401] [Versions 400 and 402] [Versions 400 and 403]

   1  <?php
   2  
   3  namespace PhpOffice\PhpSpreadsheet\Calculation\Financial;
   4  
   5  use DateTimeInterface;
   6  use PhpOffice\PhpSpreadsheet\Calculation\DateTimeExcel;
   7  use PhpOffice\PhpSpreadsheet\Calculation\Financial\Constants as FinancialConstants;
   8  use PhpOffice\PhpSpreadsheet\Calculation\Functions;
   9  
  10  class Helpers
  11  {
  12      /**
  13       * daysPerYear.
  14       *
  15       * Returns the number of days in a specified year, as defined by the "basis" value
  16       *
  17       * @param int|string $year The year against which we're testing
  18       * @param int|string $basis The type of day count:
  19       *                              0 or omitted US (NASD)   360
  20       *                              1                        Actual (365 or 366 in a leap year)
  21       *                              2                        360
  22       *                              3                        365
  23       *                              4                        European 360
  24       *
  25       * @return int|string Result, or a string containing an error
  26       */
  27      public static function daysPerYear($year, $basis = 0)
  28      {
  29          if (!is_numeric($basis)) {
  30              return Functions::NAN();
  31          }
  32  
  33          switch ($basis) {
  34              case FinancialConstants::BASIS_DAYS_PER_YEAR_NASD:
  35              case FinancialConstants::BASIS_DAYS_PER_YEAR_360:
  36              case FinancialConstants::BASIS_DAYS_PER_YEAR_360_EUROPEAN:
  37                  return 360;
  38              case FinancialConstants::BASIS_DAYS_PER_YEAR_365:
  39                  return 365;
  40              case FinancialConstants::BASIS_DAYS_PER_YEAR_ACTUAL:
  41                  return (DateTimeExcel\Helpers::isLeapYear($year)) ? 366 : 365;
  42          }
  43  
  44          return Functions::NAN();
  45      }
  46  
  47      /**
  48       * isLastDayOfMonth.
  49       *
  50       * Returns a boolean TRUE/FALSE indicating if this date is the last date of the month
  51       *
  52       * @param DateTimeInterface $date The date for testing
  53       */
  54      public static function isLastDayOfMonth(DateTimeInterface $date): bool
  55      {
  56          return $date->format('d') === $date->format('t');
  57      }
  58  }