CarbonInterval
extends DateInterval
in package
A simple API extension for DateInterval.
The implementation provides helpers to handle weeks but only days are saved. Weeks are calculated based on the total days of the current instance.
Table of Contents
- PERIOD_DAYS = 'D'
- PERIOD_HOURS = 'H'
- PERIOD_MINUTES = 'M'
- PERIOD_MONTHS = 'M'
- PERIOD_PREFIX = 'P'
- Interval spec period designators
- PERIOD_SECONDS = 'S'
- PERIOD_TIME_PREFIX = 'T'
- PERIOD_YEARS = 'Y'
- PHP_DAYS_FALSE = -99999
- Before PHP 5.4.20/5.5.4 instead of FALSE days will be set to -99999 when the interval instance was created by DateTime::diff().
- $daysExcludeWeeks : int
- $dayz : int
- $dayzExcludeWeeks : int
- $hours : int
- $minutes : int
- $months : int
- $seconds : int
- $totalDays : float
- $totalDayz : float
- $totalHours : float
- $totalMinutes : float
- $totalMonths : float
- $totalSeconds : float
- $totalWeeks : float
- $totalYears : float
- $weeks : int
- $years : int
- $cascadeFactors : array<string|int, mixed>|null
- $macros : array<string|int, mixed>
- The registered macros.
- $translator : TranslatorInterface
- A translator to ... er ... translate stuff
- $flipCascadeFactors : array<string|int, mixed>|null
- __call() : static
- Allow fluent calls on the setters... CarbonInterval::years(3)->months(5)->day().
- __callStatic() : static
- Provide static helpers to create instances. Allows CarbonInterval::years(3).
- __construct() : mixed
- Create a new CarbonInterval instance.
- __get() : int|float
- Get a part of the CarbonInterval object.
- __set() : mixed
- Set a part of the CarbonInterval object.
- __toString() : string
- Format the instance as a string using the forHumans() function.
- add() : static
- Add the passed interval to the current instance.
- cascade() : $this
- Convert overflowed values into bigger units.
- compare() : int
- Comparing with passed interval.
- compareDateIntervals() : int
- Comparing 2 date intervals.
- copy() : static
- Get a copy of the instance.
- create() : static
- Create a new CarbonInterval instance from specific values.
- day() :
- day() :
- days() :
- days() :
- dayz() :
- dayz() :
- forHumans() : string
- Get the current interval in a human readable format in the current locale.
- fromString() : static
- Creates a CarbonInterval from string.
- getCascadeFactors() : array<string|int, mixed>
- Mapping of units and factors for cascading.
- getDateIntervalSpec() : string
- Get the interval_spec string of a date interval.
- getDaysPerWeek() : int
- Returns current config for days per week.
- getFactor() : int|null
- Returns the factor for a given source-to-target couple.
- getHoursPerDay() : int
- Returns current config for hours per day.
- getLocale() : string
- Get the current translator locale.
- getMinutesPerHours() : int
- Returns current config for minutes per hour.
- getSecondsPerMinutes() : int
- Returns current config for seconds per minute.
- getTranslator() : TranslatorInterface
- Get the translator instance in use.
- hasMacro() : bool
- Check if macro is registered.
- hour() :
- hour() :
- hours() :
- hours() :
- instance() : static
- Create a CarbonInterval instance from a DateInterval one. Can not instance DateInterval objects created from DateTime::diff() as you can't externally set the $days field.
- invert() : $this
- Invert the interval.
- macro() : void
- Register a custom macro.
- make() : static|null
- Make a CarbonInterval instance from given variable if possible.
- minute() :
- minute() :
- minutes() :
- minutes() :
- mixin() : void
- Register macros from a mixin object.
- month() :
- month() :
- months() :
- months() :
- resetMacros() : mixed
- Remove all macros.
- second() :
- second() :
- seconds() :
- seconds() :
- setCascadeFactors() : mixed
- setLocale() : mixed
- Set the current translator locale.
- setTranslator() : mixed
- Set the translator instance to use.
- spec() : string
- Get the interval_spec string.
- times() : $this
- Multiply current instance given number of times
- toPeriod() : CarbonPeriod
- Convert the interval to a CarbonPeriod.
- total() : float
- Get amount of given unit equivalent to the interval.
- week() :
- week() :
- weeks() :
- weeks() :
- weeksAndDays() : static
- Allow setting of weeks and days to be cumulative.
- year() :
- year() :
- years() :
- years() :
- callMacro() : mixed
- Call given macro.
- translator() : TranslatorInterface
- Initialize the translator instance if necessary.
- getFlipCascadeFactors() : mixed
- standardizeUnit() : mixed
- wasCreatedFromDiff() : bool
- Determine if the interval was created via DateTime:diff() or not.
Constants
PERIOD_DAYS
public
mixed
PERIOD_DAYS
= 'D'
PERIOD_HOURS
public
mixed
PERIOD_HOURS
= 'H'
PERIOD_MINUTES
public
mixed
PERIOD_MINUTES
= 'M'
PERIOD_MONTHS
public
mixed
PERIOD_MONTHS
= 'M'
PERIOD_PREFIX
Interval spec period designators
public
mixed
PERIOD_PREFIX
= 'P'
PERIOD_SECONDS
public
mixed
PERIOD_SECONDS
= 'S'
PERIOD_TIME_PREFIX
public
mixed
PERIOD_TIME_PREFIX
= 'T'
PERIOD_YEARS
public
mixed
PERIOD_YEARS
= 'Y'
PHP_DAYS_FALSE
Before PHP 5.4.20/5.5.4 instead of FALSE days will be set to -99999 when the interval instance was created by DateTime::diff().
public
mixed
PHP_DAYS_FALSE
= -99999
Properties
$daysExcludeWeeks read-only
public
int
$daysExcludeWeeks
alias of dayzExcludeWeeks
$dayz
public
int
$dayz
Total days of the current interval (weeks * 7 + days).
$dayzExcludeWeeks read-only
public
int
$dayzExcludeWeeks
Total days remaining in the final week of the current instance (days % 7).
$hours
public
int
$hours
Total hours of the current interval.
$minutes
public
int
$minutes
Total minutes of the current interval.
$months
public
int
$months
Total months of the current interval.
$seconds
public
int
$seconds
Total seconds of the current interval.
$totalDays read-only
public
float
$totalDays
Number of days equivalent to the interval.
$totalDayz read-only
public
float
$totalDayz
Alias for totalDays.
$totalHours read-only
public
float
$totalHours
Number of hours equivalent to the interval.
$totalMinutes read-only
public
float
$totalMinutes
Number of minutes equivalent to the interval.
$totalMonths read-only
public
float
$totalMonths
Number of months equivalent to the interval.
$totalSeconds read-only
public
float
$totalSeconds
Number of seconds equivalent to the interval.
$totalWeeks read-only
public
float
$totalWeeks
Number of weeks equivalent to the interval.
$totalYears read-only
public
float
$totalYears
Number of years equivalent to the interval.
$weeks
public
int
$weeks
Total weeks of the current interval calculated from the days.
$years
public
int
$years
Total years of the current interval.
$cascadeFactors
protected
static array<string|int, mixed>|null
$cascadeFactors
$macros
The registered macros.
protected
static array<string|int, mixed>
$macros
= array()
$translator
A translator to ... er ... translate stuff
protected
static TranslatorInterface
$translator
$flipCascadeFactors
private
static array<string|int, mixed>|null
$flipCascadeFactors
Methods
__call()
Allow fluent calls on the setters... CarbonInterval::years(3)->months(5)->day().
public
__call(string $name, array<string|int, mixed> $args) : static
Note: This is done using the magic method to allow static and instance methods to have the same names.
Parameters
- $name : string
- $args : array<string|int, mixed>
Return values
static —__callStatic()
Provide static helpers to create instances. Allows CarbonInterval::years(3).
public
static __callStatic(string $name, array<string|int, mixed> $args) : static
Note: This is done using the magic method to allow static and instance methods to have the same names.
Parameters
- $name : string
- $args : array<string|int, mixed>
Return values
static —__construct()
Create a new CarbonInterval instance.
public
__construct([int $years = 1 ][, int $months = null ][, int $weeks = null ][, int $days = null ][, int $hours = null ][, int $minutes = null ][, int $seconds = null ]) : mixed
Parameters
- $years : int = 1
- $months : int = null
- $weeks : int = null
- $days : int = null
- $hours : int = null
- $minutes : int = null
- $seconds : int = null
Return values
mixed —__get()
Get a part of the CarbonInterval object.
public
__get(string $name) : int|float
Parameters
- $name : string
Tags
Return values
int|float —__set()
Set a part of the CarbonInterval object.
public
__set(string $name, int $val) : mixed
Parameters
- $name : string
- $val : int
Tags
Return values
mixed —__toString()
Format the instance as a string using the forHumans() function.
public
__toString() : string
Return values
string —add()
Add the passed interval to the current instance.
public
add(DateInterval $interval) : static
Parameters
- $interval : DateInterval
Return values
static —cascade()
Convert overflowed values into bigger units.
public
cascade() : $this
Return values
$this —compare()
Comparing with passed interval.
public
compare(DateInterval $interval) : int
Parameters
- $interval : DateInterval
Return values
int —compareDateIntervals()
Comparing 2 date intervals.
public
static compareDateIntervals(DateInterval $a, DateInterval $b) : int
Parameters
- $a : DateInterval
- $b : DateInterval
Return values
int —copy()
Get a copy of the instance.
public
copy() : static
Return values
static —create()
Create a new CarbonInterval instance from specific values.
public
static create([int $years = 1 ][, int $months = null ][, int $weeks = null ][, int $days = null ][, int $hours = null ][, int $minutes = null ][, int $seconds = null ]) : static
This is an alias for the constructor that allows better fluent syntax as it allows you to do CarbonInterval::create(1)->fn() rather than (new CarbonInterval(1))->fn().
Parameters
- $years : int = 1
- $months : int = null
- $weeks : int = null
- $days : int = null
- $hours : int = null
- $minutes : int = null
- $seconds : int = null
Return values
static —day()
public
static day(mixed $days) :
Alias for days()
Parameters
- $days : mixed
Return values
—day()
public
day(mixed $days) :
Alias for days().
Parameters
- $days : mixed
Return values
—days()
public
days(mixed $days) :
Set the days portion of the current interval.
Parameters
- $days : mixed
Return values
—days()
public
static days(mixed $days) :
Create instance specifying a number of days.
Parameters
- $days : mixed
Return values
—dayz()
public
static dayz(mixed $days) :
Alias for days()
Parameters
- $days : mixed
Return values
—dayz()
public
dayz(mixed $days) :
Alias for days().
Parameters
- $days : mixed
Return values
—forHumans()
Get the current interval in a human readable format in the current locale.
public
forHumans([bool $short = false ]) : string
Parameters
- $short : bool = false
-
(false by default), returns short units if true
Return values
string —fromString()
Creates a CarbonInterval from string.
public
static fromString(string $intervalDefinition) : static
Format:
Suffix | Unit | Example | DateInterval expression -------|---------|---------|------------------------ y | years | 1y | P1Y mo | months | 3mo | P3M w | weeks | 2w | P2W d | days | 28d | P28D h | hours | 4h | PT4H m | minutes | 12m | PT12M s | seconds | 59s | PT59S
e. g. 1w 3d 4h 32m 23s is converted to 10 days 4 hours 32 minutes and 23 seconds.
Special cases:
- An empty string will return a zero interval
- Fractions are allowed for weeks, days, hours and minutes and will be converted and rounded to the next smaller value (caution: 0.5w = 4d)
Parameters
- $intervalDefinition : string
Return values
static —getCascadeFactors()
Mapping of units and factors for cascading.
public
static getCascadeFactors() : array<string|int, mixed>
Should only be modified by changing the factors or referenced constants.
Return values
array<string|int, mixed> —getDateIntervalSpec()
Get the interval_spec string of a date interval.
public
static getDateIntervalSpec(DateInterval $interval) : string
Parameters
- $interval : DateInterval
Return values
string —getDaysPerWeek()
Returns current config for days per week.
public
static getDaysPerWeek() : int
Return values
int —getFactor()
Returns the factor for a given source-to-target couple.
public
static getFactor(string $source, string $target) : int|null
Parameters
- $source : string
- $target : string
Return values
int|null —getHoursPerDay()
Returns current config for hours per day.
public
static getHoursPerDay() : int
Return values
int —getLocale()
Get the current translator locale.
public
static getLocale() : string
Return values
string —getMinutesPerHours()
Returns current config for minutes per hour.
public
static getMinutesPerHours() : int
Return values
int —getSecondsPerMinutes()
Returns current config for seconds per minute.
public
static getSecondsPerMinutes() : int
Return values
int —getTranslator()
Get the translator instance in use.
public
static getTranslator() : TranslatorInterface
Return values
TranslatorInterface —hasMacro()
Check if macro is registered.
public
static hasMacro(string $name) : bool
Parameters
- $name : string
Return values
bool —hour()
public
static hour(mixed $hours) :
Alias for hours()
Parameters
- $hours : mixed
Return values
—hour()
public
hour(mixed $hours) :
Alias for hours().
Parameters
- $hours : mixed
Return values
—hours()
public
static hours(mixed $hours) :
Create instance specifying a number of hours.
Parameters
- $hours : mixed
Return values
—hours()
public
hours(mixed $hours) :
Set the hours portion of the current interval.
Parameters
- $hours : mixed
Return values
—instance()
Create a CarbonInterval instance from a DateInterval one. Can not instance DateInterval objects created from DateTime::diff() as you can't externally set the $days field.
public
static instance(DateInterval $di[, bool $trimMicroseconds = true ]) : static
Pass false as second argument to get a microseconds-precise interval. Else microseconds in the original interval will not be kept.
Parameters
- $di : DateInterval
- $trimMicroseconds : bool = true
-
(true by default)
Return values
static —invert()
Invert the interval.
public
invert() : $this
Return values
$this —macro()
Register a custom macro.
public
static macro(string $name, object|callable $macro) : void
Parameters
- $name : string
- $macro : object|callable
Return values
void —make()
Make a CarbonInterval instance from given variable if possible.
public
static make(mixed $var) : static|null
Always return a new instance. Parse only strings and only these likely to be intervals (skip dates and recurrences). Throw an exception for invalid format, but otherwise return null.
Parameters
- $var : mixed
Return values
static|null —minute()
public
minute(mixed $minutes) :
Alias for minutes().
Parameters
- $minutes : mixed
Return values
—minute()
public
static minute(mixed $minutes) :
Alias for minutes()
Parameters
- $minutes : mixed
Return values
—minutes()
public
minutes(mixed $minutes) :
Set the minutes portion of the current interval.
Parameters
- $minutes : mixed
Return values
—minutes()
public
static minutes(mixed $minutes) :
Create instance specifying a number of minutes.
Parameters
- $minutes : mixed
Return values
—mixin()
Register macros from a mixin object.
public
static mixin(object $mixin) : void
Parameters
- $mixin : object
Tags
Return values
void —month()
public
month(mixed $months) :
Alias for months().
Parameters
- $months : mixed
Return values
—month()
public
static month(mixed $months) :
Alias for months()
Parameters
- $months : mixed
Return values
—months()
public
months(mixed $months) :
Set the months portion of the current interval.
Parameters
- $months : mixed
Return values
—months()
public
static months(mixed $months) :
Create instance specifying a number of months.
Parameters
- $months : mixed
Return values
—resetMacros()
Remove all macros.
public
static resetMacros() : mixed
Return values
mixed —second()
public
static second(mixed $seconds) :
Alias for seconds()
Parameters
- $seconds : mixed
Return values
—second()
public
second(mixed $seconds) :
Alias for seconds().
Parameters
- $seconds : mixed
Return values
—seconds()
public
seconds(mixed $seconds) :
Set the seconds portion of the current interval.
Parameters
- $seconds : mixed
Return values
—seconds()
public
static seconds(mixed $seconds) :
Create instance specifying a number of seconds.
Parameters
- $seconds : mixed
Return values
—setCascadeFactors()
public
static setCascadeFactors(array<string|int, mixed> $cascadeFactors) : mixed
Parameters
- $cascadeFactors : array<string|int, mixed>
Return values
mixed —setLocale()
Set the current translator locale.
public
static setLocale(string $locale) : mixed
Parameters
- $locale : string
Return values
mixed —setTranslator()
Set the translator instance to use.
public
static setTranslator(TranslatorInterface $translator) : mixed
Parameters
- $translator : TranslatorInterface
Return values
mixed —spec()
Get the interval_spec string.
public
spec() : string
Return values
string —times()
Multiply current instance given number of times
public
times(float $factor) : $this
Parameters
- $factor : float
Return values
$this —toPeriod()
Convert the interval to a CarbonPeriod.
public
toPeriod() : CarbonPeriod
Return values
CarbonPeriod —total()
Get amount of given unit equivalent to the interval.
public
total(string $unit) : float
Parameters
- $unit : string
Tags
Return values
float —week()
public
week(mixed $weeks) :
Alias for weeks().
Parameters
- $weeks : mixed
Return values
—week()
public
static week(mixed $weeks) :
Alias for weeks()
Parameters
- $weeks : mixed
Return values
—weeks()
public
weeks(mixed $weeks) :
Set the weeks portion of the current interval. Will overwrite dayz value.
Parameters
- $weeks : mixed
Return values
—weeks()
public
static weeks(mixed $weeks) :
Create instance specifying a number of weeks.
Parameters
- $weeks : mixed
Return values
—weeksAndDays()
Allow setting of weeks and days to be cumulative.
public
weeksAndDays(int $weeks, int $days) : static
Parameters
- $weeks : int
-
Number of weeks to set
- $days : int
-
Number of days to set
Return values
static —year()
public
static year(mixed $years) :
Alias for years()
Parameters
- $years : mixed
Return values
—year()
public
year(mixed $years) :
Alias for years().
Parameters
- $years : mixed
Return values
—years()
public
years(mixed $years) :
Set the years portion of the current interval.
Parameters
- $years : mixed
Return values
—years()
public
static years(mixed $years) :
Create instance specifying a number of years.
Parameters
- $years : mixed
Return values
—callMacro()
Call given macro.
protected
callMacro(string $name, array<string|int, mixed> $parameters) : mixed
Parameters
- $name : string
- $parameters : array<string|int, mixed>
Return values
mixed —translator()
Initialize the translator instance if necessary.
protected
static translator() : TranslatorInterface
Return values
TranslatorInterface —getFlipCascadeFactors()
private
static getFlipCascadeFactors() : mixed
Return values
mixed —standardizeUnit()
private
static standardizeUnit(mixed $unit) : mixed
Parameters
- $unit : mixed
Return values
mixed —wasCreatedFromDiff()
Determine if the interval was created via DateTime:diff() or not.
private
static wasCreatedFromDiff(DateInterval $interval) : bool
Parameters
- $interval : DateInterval