Constants

STARTWEEK_SUNDAY

STARTWEEK_SUNDAY = 1

STARTWEEK_MONDAY

STARTWEEK_MONDAY = 2

STARTWEEK_MONDAY_ALT

STARTWEEK_MONDAY_ALT = 11

STARTWEEK_TUESDAY

STARTWEEK_TUESDAY = 12

STARTWEEK_WEDNESDAY

STARTWEEK_WEDNESDAY = 13

STARTWEEK_THURSDAY

STARTWEEK_THURSDAY = 14

STARTWEEK_FRIDAY

STARTWEEK_FRIDAY = 15

STARTWEEK_SATURDAY

STARTWEEK_SATURDAY = 16

STARTWEEK_SUNDAY_ALT

STARTWEEK_SUNDAY_ALT = 17

DOW_SUNDAY

DOW_SUNDAY = 1

DOW_MONDAY

DOW_MONDAY = 2

DOW_TUESDAY

DOW_TUESDAY = 3

DOW_WEDNESDAY

DOW_WEDNESDAY = 4

DOW_THURSDAY

DOW_THURSDAY = 5

DOW_FRIDAY

DOW_FRIDAY = 6

DOW_SATURDAY

DOW_SATURDAY = 7

STARTWEEK_MONDAY_ISO

STARTWEEK_MONDAY_ISO = 21

METHODARR

METHODARR = [self::STARTWEEK_SUNDAY => self::DOW_SUNDAY, self::DOW_MONDAY, self::STARTWEEK_MONDAY_ALT => self::DOW_MONDAY, self::DOW_TUESDAY, self::DOW_WEDNESDAY, self::DOW_THURSDAY, self::DOW_FRIDAY, self::DOW_SATURDAY, self::DOW_SUNDAY, self::STARTWEEK_MONDAY_ISO => self::STARTWEEK_MONDAY_ISO]

Methods

isLeapYear()

isLeapYear(int|string  $year) : bool

Identify if a year is a leap year or not.

Parameters

int|string $year

The year to test

Returns

bool —

TRUE if the year is a leap year, otherwise FALSE

getDateValue()

getDateValue(mixed  $dateValue) : mixed

getDateValue.

Parameters

mixed $dateValue

Returns

mixed —

Excel date/time serial value, or string if error

DATETIMENOW()

DATETIMENOW() : mixed

DATETIMENOW.

Returns the current date and time. The NOW function is useful when you need to display the current date and time on a worksheet or calculate a value based on the current date and time, and have that value updated each time you open the worksheet.

NOTE: When used in a Cell Formula, MS Excel changes the cell format so that it matches the date and time format of your regional settings. PhpSpreadsheet does not change cell formatting in this way.

Excel Function: NOW()

Returns

mixed —

Excel date/time serial value, PHP date/time serial value or PHP date/time object, depending on the value of the ReturnDateType flag

DATENOW()

DATENOW() : mixed

DATENOW.

Returns the current date. The NOW function is useful when you need to display the current date and time on a worksheet or calculate a value based on the current date and time, and have that value updated each time you open the worksheet.

NOTE: When used in a Cell Formula, MS Excel changes the cell format so that it matches the date and time format of your regional settings. PhpSpreadsheet does not change cell formatting in this way.

Excel Function: TODAY()

Returns

mixed —

Excel date/time serial value, PHP date/time serial value or PHP date/time object, depending on the value of the ReturnDateType flag

DATE()

DATE(int  $year, int  $month = 1, int  $day = 1) : mixed

DATE.

The DATE function returns a value that represents a particular date.

NOTE: When used in a Cell Formula, MS Excel changes the cell format so that it matches the date format of your regional settings. PhpSpreadsheet does not change cell formatting in this way.

Excel Function: DATE(year,month,day)

PhpSpreadsheet is a lot more forgiving than MS Excel when passing non numeric values to this function. A Month name or abbreviation (English only at this point) such as 'January' or 'Jan' will still be accepted, as will a day value with a suffix (e.g. '21st' rather than simply 21); again only English language.

Parameters

int $year

The value of the year argument can include one to four digits. Excel interprets the year argument according to the configured date system: 1900 or 1904. If year is between 0 (zero) and 1899 (inclusive), Excel adds that value to 1900 to calculate the year. For example, DATE(108,1,2) returns January 2, 2008 (1900+108). If year is between 1900 and 9999 (inclusive), Excel uses that value as the year. For example, DATE(2008,1,2) returns January 2, 2008. If year is less than 0 or is 10000 or greater, Excel returns the #NUM! error value.

int $month

A positive or negative integer representing the month of the year from 1 to 12 (January to December). If month is greater than 12, month adds that number of months to the first month in the year specified. For example, DATE(2008,14,2) returns the serial number representing February 2, 2009. If month is less than 1, month subtracts the magnitude of that number of months, plus 1, from the first month in the year specified. For example, DATE(2008,-3,2) returns the serial number representing September 2, 2007.

int $day

A positive or negative integer representing the day of the month from 1 to 31. If day is greater than the number of days in the month specified, day adds that number of days to the first day in the month. For example, DATE(2008,1,35) returns the serial number representing February 4, 2008. If day is less than 1, day subtracts the magnitude that number of days, plus one, from the first day of the month specified. For example, DATE(2008,1,-15) returns the serial number representing December 16, 2007.

Returns

mixed —

Excel date/time serial value, PHP date/time serial value or PHP date/time object, depending on the value of the ReturnDateType flag

TIME()

TIME(int  $hour, int  $minute, int  $second) : mixed

TIME.

The TIME function returns a value that represents a particular time.

NOTE: When used in a Cell Formula, MS Excel changes the cell format so that it matches the time format of your regional settings. PhpSpreadsheet does not change cell formatting in this way.

Excel Function: TIME(hour,minute,second)

Parameters

int $hour

A number from 0 (zero) to 32767 representing the hour. Any value greater than 23 will be divided by 24 and the remainder will be treated as the hour value. For example, TIME(27,0,0) = TIME(3,0,0) = .125 or 3:00 AM.

int $minute

A number from 0 to 32767 representing the minute. Any value greater than 59 will be converted to hours and minutes. For example, TIME(0,750,0) = TIME(12,30,0) = .520833 or 12:30 PM.

int $second

A number from 0 to 32767 representing the second. Any value greater than 59 will be converted to hours, minutes, and seconds. For example, TIME(0,0,2000) = TIME(0,33,22) = .023148 or 12:33:20 AM

Returns

mixed —

Excel date/time serial value, PHP date/time serial value or PHP date/time object, depending on the value of the ReturnDateType flag

DATEVALUE()

DATEVALUE(string  $dateValue = 1) : mixed

DATEVALUE.

Returns a value that represents a particular date. Use DATEVALUE to convert a date represented by a text string to an Excel or PHP date/time stamp value.

NOTE: When used in a Cell Formula, MS Excel changes the cell format so that it matches the date format of your regional settings. PhpSpreadsheet does not change cell formatting in this way.

Excel Function: DATEVALUE(dateValue)

Parameters

string $dateValue

Text that represents a date in a Microsoft Excel date format. For example, "1/30/2008" or "30-Jan-2008" are text strings within quotation marks that represent dates. Using the default date system in Excel for Windows, date_text must represent a date from January 1, 1900, to December 31, 9999. Using the default date system in Excel for the Macintosh, date_text must represent a date from January 1, 1904, to December 31, 9999. DATEVALUE returns the #VALUE! error value if date_text is out of this range.

Returns

mixed —

Excel date/time serial value, PHP date/time serial value or PHP date/time object, depending on the value of the ReturnDateType flag

TIMEVALUE()

TIMEVALUE(string  $timeValue) : mixed

TIMEVALUE.

Returns a value that represents a particular time. Use TIMEVALUE to convert a time represented by a text string to an Excel or PHP date/time stamp value.

NOTE: When used in a Cell Formula, MS Excel changes the cell format so that it matches the time format of your regional settings. PhpSpreadsheet does not change cell formatting in this way.

Excel Function: TIMEVALUE(timeValue)

Parameters

string $timeValue

A text string that represents a time in any one of the Microsoft Excel time formats; for example, "6:45 PM" and "18:45" text strings within quotation marks that represent time. Date information in time_text is ignored.

Returns

mixed —

Excel date/time serial value, PHP date/time serial value or PHP date/time object, depending on the value of the ReturnDateType flag

DATEDIF()

DATEDIF(mixed  $startDate, mixed  $endDate, string  $unit = 'D') : int|string

DATEDIF.

Parameters

mixed $startDate

Excel date serial value, PHP date/time stamp, PHP DateTime object or a standard date string

mixed $endDate

Excel date serial value, PHP date/time stamp, PHP DateTime object or a standard date string

string $unit

Returns

int|string —

Interval between the dates

DAYS()

DAYS(\DateTimeImmutable|float|int|string  $endDate, \DateTimeImmutable|float|int|string  $startDate) : int|string

DAYS.

Returns the number of days between two dates

Excel Function: DAYS(endDate, startDate)

Parameters

\DateTimeImmutable|float|int|string $endDate

Excel date serial value (float), PHP date timestamp (integer), PHP DateTime object, or a standard date string

\DateTimeImmutable|float|int|string $startDate

Excel date serial value (float), PHP date timestamp (integer), PHP DateTime object, or a standard date string

Returns

int|string —

Number of days between start date and end date or an error

DAYS360()

DAYS360(mixed  $startDate, mixed  $endDate, bool  $method = false) : int|string

DAYS360.

Returns the number of days between two dates based on a 360-day year (twelve 30-day months), which is used in some accounting calculations. Use this function to help compute payments if your accounting system is based on twelve 30-day months.

Excel Function: DAYS360(startDate,endDate[,method])

Parameters

mixed $startDate

Excel date serial value (float), PHP date timestamp (integer), PHP DateTime object, or a standard date string

mixed $endDate

Excel date serial value (float), PHP date timestamp (integer), PHP DateTime object, or a standard date string

bool $method

US or European Method FALSE or omitted: U.S. (NASD) method. If the starting date is the last day of a month, it becomes equal to the 30th of the same month. If the ending date is the last day of a month and the starting date is earlier than the 30th of a month, the ending date becomes equal to the 1st of the next month; otherwise the ending date becomes equal to the 30th of the same month. TRUE: European method. Starting dates and ending dates that occur on the 31st of a month become equal to the 30th of the same month.

Returns

int|string —

Number of days between start date and end date

YEARFRAC()

YEARFRAC(mixed  $startDate, mixed  $endDate, int  $method) : float|string

YEARFRAC.

Calculates the fraction of the year represented by the number of whole days between two dates (the start_date and the end_date). Use the YEARFRAC worksheet function to identify the proportion of a whole year's benefits or obligations to assign to a specific term.

Excel Function: YEARFRAC(startDate,endDate[,method]) See https://lists.oasis-open.org/archives/office-formula/200806/msg00039.html for description of algorithm used in Excel

Parameters

mixed $startDate

Excel date serial value (float), PHP date timestamp (integer), PHP DateTime object, or a standard date string

mixed $endDate

Excel date serial value (float), PHP date timestamp (integer), PHP DateTime object, or a standard date string

int $method

Method used for the calculation 0 or omitted US (NASD) 30/360 1 Actual/actual 2 Actual/360 3 Actual/365 4 European 30/360

Returns

float|string —

fraction of the year, or a string containing an error

NETWORKDAYS()

NETWORKDAYS(mixed  $startDate, mixed  $endDate, mixed  ...$dateArgs) : int|string

NETWORKDAYS.

Returns the number of whole working days between start_date and end_date. Working days exclude weekends and any dates identified in holidays. Use NETWORKDAYS to calculate employee benefits that accrue based on the number of days worked during a specific term.

Excel Function: NETWORKDAYS(startDate,endDate[,holidays[,holiday[,...]]])

Parameters

mixed $startDate

Excel date serial value (float), PHP date timestamp (integer), PHP DateTime object, or a standard date string

mixed $endDate

Excel date serial value (float), PHP date timestamp (integer), PHP DateTime object, or a standard date string

mixed $dateArgs variadic

Returns

int|string —

Interval between the dates

WORKDAY()

WORKDAY(mixed  $startDate, int  $endDays, mixed  ...$dateArgs) : mixed

WORKDAY.

Returns the date that is the indicated number of working days before or after a date (the starting date). Working days exclude weekends and any dates identified as holidays. Use WORKDAY to exclude weekends or holidays when you calculate invoice due dates, expected delivery times, or the number of days of work performed.

Excel Function: WORKDAY(startDate,endDays[,holidays[,holiday[,...]]])

Parameters

mixed $startDate

Excel date serial value (float), PHP date timestamp (integer), PHP DateTime object, or a standard date string

int $endDays

The number of nonweekend and nonholiday days before or after startDate. A positive value for days yields a future date; a negative value yields a past date.

mixed $dateArgs variadic

Returns

mixed —

Excel date/time serial value, PHP date/time serial value or PHP date/time object, depending on the value of the ReturnDateType flag

DAYOFMONTH()

DAYOFMONTH(mixed  $dateValue = 1) : int|string

DAYOFMONTH.

Returns the day of the month, for a specified date. The day is given as an integer ranging from 1 to 31.

Excel Function: DAY(dateValue)

Parameters

mixed $dateValue

Excel date serial value (float), PHP date timestamp (integer), PHP DateTime object, or a standard date string

Returns

int|string —

Day of the month

WEEKDAY()

WEEKDAY(float|int|string  $dateValue = 1, int  $style = 1) : int|string

WEEKDAY.

Returns the day of the week for a specified date. The day is given as an integer ranging from 0 to 7 (dependent on the requested style).

Excel Function: WEEKDAY(dateValue[,style])

Parameters

float|int|string $dateValue

Excel date serial value (float), PHP date timestamp (integer), PHP DateTime object, or a standard date string

int $style

A number that determines the type of return value 1 or omitted Numbers 1 (Sunday) through 7 (Saturday). 2 Numbers 1 (Monday) through 7 (Sunday). 3 Numbers 0 (Monday) through 6 (Sunday).

Returns

int|string —

Day of the week value

WEEKNUM()

WEEKNUM(mixed  $dateValue = 1, int  $method = self::STARTWEEK_SUNDAY) : int|string

WEEKNUM.

Returns the week of the year for a specified date. The WEEKNUM function considers the week containing January 1 to be the first week of the year. However, there is a European standard that defines the first week as the one with the majority of days (four or more) falling in the new year. This means that for years in which there are three days or less in the first week of January, the WEEKNUM function returns week numbers that are incorrect according to the European standard.

Excel Function: WEEKNUM(dateValue[,style])

Parameters

mixed $dateValue

Excel date serial value (float), PHP date timestamp (integer), PHP DateTime object, or a standard date string

int $method

Week begins on Sunday or Monday 1 or omitted Week begins on Sunday. 2 Week begins on Monday. 11 Week begins on Monday. 12 Week begins on Tuesday. 13 Week begins on Wednesday. 14 Week begins on Thursday. 15 Week begins on Friday. 16 Week begins on Saturday. 17 Week begins on Sunday. 21 ISO (Jan. 4 is week 1, begins on Monday).

Returns

int|string —

Week Number

ISOWEEKNUM()

ISOWEEKNUM(mixed  $dateValue = 1) : int|string

ISOWEEKNUM.

Returns the ISO 8601 week number of the year for a specified date.

Excel Function: ISOWEEKNUM(dateValue)

Parameters

mixed $dateValue

Excel date serial value (float), PHP date timestamp (integer), PHP DateTime object, or a standard date string

Returns

int|string —

Week Number

MONTHOFYEAR()

MONTHOFYEAR(mixed  $dateValue = 1) : int|string

MONTHOFYEAR.

Returns the month of a date represented by a serial number. The month is given as an integer, ranging from 1 (January) to 12 (December).

Excel Function: MONTH(dateValue)

Parameters

mixed $dateValue

Excel date serial value (float), PHP date timestamp (integer), PHP DateTime object, or a standard date string

Returns

int|string —

Month of the year

YEAR()

YEAR(mixed  $dateValue = 1) : int|string

YEAR.

Returns the year corresponding to a date. The year is returned as an integer in the range 1900-9999.

Excel Function: YEAR(dateValue)

Parameters

mixed $dateValue

Excel date serial value (float), PHP date timestamp (integer), PHP DateTime object, or a standard date string

Returns

int|string —

Year

HOUROFDAY()

HOUROFDAY(mixed  $timeValue) : int|string

HOUROFDAY.

Returns the hour of a time value. The hour is given as an integer, ranging from 0 (12:00 A.M.) to 23 (11:00 P.M.).

Excel Function: HOUR(timeValue)

Parameters

mixed $timeValue

Excel date serial value (float), PHP date timestamp (integer), PHP DateTime object, or a standard time string

Returns

int|string —

Hour

MINUTE()

MINUTE(mixed  $timeValue) : int|string

MINUTE.

Returns the minutes of a time value. The minute is given as an integer, ranging from 0 to 59.

Excel Function: MINUTE(timeValue)

Parameters

mixed $timeValue

Excel date serial value (float), PHP date timestamp (integer), PHP DateTime object, or a standard time string

Returns

int|string —

Minute

SECOND()

SECOND(mixed  $timeValue) : int|string

SECOND.

Returns the seconds of a time value. The second is given as an integer in the range 0 (zero) to 59.

Excel Function: SECOND(timeValue)

Parameters

mixed $timeValue

Excel date serial value (float), PHP date timestamp (integer), PHP DateTime object, or a standard time string

Returns

int|string —

Second

EDATE()

EDATE(mixed  $dateValue = 1, int  $adjustmentMonths) : mixed

EDATE.

Returns the serial number that represents the date that is the indicated number of months before or after a specified date (the start_date). Use EDATE to calculate maturity dates or due dates that fall on the same day of the month as the date of issue.

Excel Function: EDATE(dateValue,adjustmentMonths)

Parameters

mixed $dateValue

Excel date serial value (float), PHP date timestamp (integer), PHP DateTime object, or a standard date string

int $adjustmentMonths

The number of months before or after start_date. A positive value for months yields a future date; a negative value yields a past date.

Returns

mixed —

Excel date/time serial value, PHP date/time serial value or PHP date/time object, depending on the value of the ReturnDateType flag

EOMONTH()

EOMONTH(mixed  $dateValue = 1, int  $adjustmentMonths) : mixed

EOMONTH.

Returns the date value for the last day of the month that is the indicated number of months before or after start_date. Use EOMONTH to calculate maturity dates or due dates that fall on the last day of the month.

Excel Function: EOMONTH(dateValue,adjustmentMonths)

Parameters

mixed $dateValue

Excel date serial value (float), PHP date timestamp (integer), PHP DateTime object, or a standard date string

int $adjustmentMonths

The number of months before or after start_date. A positive value for months yields a future date; a negative value yields a past date.

Returns

mixed —

Excel date/time serial value, PHP date/time serial value or PHP date/time object, depending on the value of the ReturnDateType flag

dateDiff360()

dateDiff360(int  $startDay, int  $startMonth, int  $startYear, int  $endDay, int  $endMonth, int  $endYear, bool  $methodUS) : int

Return the number of days between two dates based on a 360 day calendar.

Parameters

int $startDay

Day of month of the start date

int $startMonth

Month of the start date

int $startYear

Year of the start date

int $endDay

Day of month of the start date

int $endMonth

Month of the start date

int $endYear

Year of the start date

bool $methodUS

Whether to use the US method or the European method of calculation

Returns

int —

Number of days between the start date and the end date

getTimeValue()

getTimeValue(string  $timeValue) : mixed

getTimeValue.

Parameters

string $timeValue

Returns

mixed —

Excel date/time serial value, or string if error

adjustDateByMonths()

adjustDateByMonths(mixed  $dateValue, mixed  $adjustmentMonths) : mixed

Parameters

mixed $dateValue
mixed $adjustmentMonths

Returns

mixed —

replaceIfEmpty()

replaceIfEmpty(mixed  $value, mixed  $altValue) : void

Help reduce perceived complexity of some tests.

Parameters

mixed $value
mixed $altValue

adjustYear()

adjustYear(string  $testVal1, string  $testVal2, string  $testVal3) : void

Adjust year in ambiguous situations.

Parameters

string $testVal1
string $testVal2
string $testVal3

returnIn3FormatsArray()

returnIn3FormatsArray(array  $dateArray, bool  $noFrac = false) : mixed

Return result in one of three formats.

Parameters

array $dateArray
bool $noFrac

Returns

mixed —

returnIn3FormatsFloat()

returnIn3FormatsFloat(float  $excelDateValue) : mixed

Return result in one of three formats.

Parameters

float $excelDateValue

Returns

mixed —

returnIn3FormatsObject()

returnIn3FormatsObject(\DateTime  $PHPDateObject) : mixed

Return result in one of three formats.

Parameters

\DateTime $PHPDateObject

Returns

mixed —

buggyWeekNum1900()

buggyWeekNum1900(int  $method) : bool

Parameters

int $method

Returns

bool —

buggyWeekNum1904()

buggyWeekNum1904(int  $method, bool  $origNull, \DateTime  $dateObject) : bool

Parameters

int $method
bool $origNull
\DateTime $dateObject

Returns

bool —

nullFalseTrueToNumber()

nullFalseTrueToNumber(mixed  $number) : void

Many functions accept null/false/true argument treated as 0/0/1.

Parameters

mixed $number

silly1900()

silly1900(\DateTime  $PHPDateObject, string  $mod = '-1 day') : void

Parameters

\DateTime $PHPDateObject
string $mod