Extends the built-in DateTime class to provide handy methods and locale-aware formatting helpers
int
7
string
'Y-m-d H:i:s'
int
5
int
24
int
60
int
1
int
3
int
12
int
6
int
60
int
7
int
4
int
2
string
'unixTimestampFormat'
int
3
int
52
int
100
int
10
\IntlDateFormatter[]
In-memory cache of date formatters
string|int|int[]|\Closure
The format to use when converting this object to JSON.
array
Holds the last error generated by createFromFormat
string|int|int[]
The format to use when formatting a time using Cake\I18n\Time::i18nFormat()
and __toString
. This format is also used by parseDateTime()
.
array
Names of days of the week.
string|null
The default locale to be used for displaying formatted date strings.
\Cake\Chronos\DifferenceFormatterInterface
Instance of the diff formatting object.
bool
Whether lenient parsing is enabled for IntlDateFormatter.
string|int|int[]
The format to use when formatting a time using Cake\I18n\Time::nice()
string
Regex for relative period.
string
Format to use for __toString method when type juggling occurs.
int
Last day of week
int
First day of week
array
Days of weekend
string[]
The format to use when formatting a time using Time::timeAgoInWords()
and the difference is less than Time::$wordEnd
string
The end of relative time telling
string|int|int[]
The format to use when formatting a time using Cake\I18n\Time::timeAgoInWords()
and the difference is more than Cake\I18n\Time::$wordEnd
Add days to the instance. Positive $value travels forward while negative $value travels into the past.
Add hours to the instance. Positive $value travels forward while negative $value travels into the past.
Add minutes to the instance. Positive $value travels forward while negative $value travels into the past.
Add months to the instance. Positive $value travels forward while negative $value travels into the past.
Add months with overflowing to the instance. Positive $value travels forward while negative $value travels into the past.
Add seconds to the instance. Positive $value travels forward while negative $value travels into the past.
Add weekdays to the instance. Positive $value travels forward while negative $value travels into the past.
Add weeks to the instance. Positive $value travels forward while negative $value travels into the past.
Add years to the instance. Positive $value travel forward while negative $value travel into the past.
Add years with overflowing to the instance. Positive $value travels forward while negative $value travels into the past.
Modify the current instance to the average of a given instance (default now) and the current instance.
Creates a ChronosInterface instance from an array of date and time values.
Create a ChronosInterface instance from just a date. The time portion is set to now.
Create a ChronosInterface instance from just a time. The date portion is set to today.
Modify to the first occurrence of a given day of the week in the current month. If no dayOfWeek is provided, modify to the first day of the current month. Use the supplied consts to indicate the desired dayOfWeek, ex. static::MONDAY.
Modify to the first occurrence of a given day of the week in the current quarter. If no dayOfWeek is provided, modify to the first day of the current quarter. Use the supplied consts to indicate the desired dayOfWeek, ex. static::MONDAY.
Modify to the first occurrence of a given day of the week in the current year. If no dayOfWeek is provided, modify to the first day of the current year. Use the supplied consts to indicate the desired dayOfWeek, ex. static::MONDAY.
Returns any errors or warnings that were found during the parsing of the last object created by this class.
Determine if there is a relative keyword in the time string, this is to create dates relative to now for test instances. e.g.: next tuesday
Returns a formatted string for this time object using the preferred format and language for the specified locale.
Returns a string that should be serialized when converting this object to JSON
Modify to the last occurrence of a given day of the week in the current month. If no dayOfWeek is provided, modify to the last day of the current month. Use the supplied consts to indicate the desired dayOfWeek, ex. static::MONDAY.
Modify to the last occurrence of a given day of the week in the current quarter. If no dayOfWeek is provided, modify to the last day of the current quarter. Use the supplied consts to indicate the desired dayOfWeek, ex. static::MONDAY.
Modify to the last occurrence of a given day of the week in the current year. If no dayOfWeek is provided, modify to the last day of the current year. Use the supplied consts to indicate the desired dayOfWeek, ex. static::MONDAY.
Get the maximum instance between a given instance (default now) and the current instance.
Get the minimum instance between a given instance (default now) and the current instance.
Modify to the given occurrence of a given day of the week in the current month. If the calculated occurrence is outside the scope of the current month, then return false and no modifications are made.
Modify to the given occurrence of a given day of the week in the current quarter. If the calculated occurrence is outside the scope of the current quarter, then return false and no modifications are made.
Modify to the given occurrence of a given day of the week in the current year. If the calculated occurrence is outside the scope of the current year, then return false and no modifications are made.
Create a ChronosInterface instance from a string. This is an alias for the constructor that allows better fluent syntax as it allows you to do ChronosInterface::parse('Monday next week')->fn() rather than (new Chronos('Monday next week'))->fn()
Returns a new Time object after parsing the provided $date string based on the passed or configured date time format. This method is locale dependent, Any string that is passed to this function will be interpreted as a locale dependent string.
Returns a new Time object after parsing the provided time string based on the passed or configured date time format. This method is locale dependent, Any string that is passed to this function will be interpreted as a locale dependent string.
Returns a new Time object after parsing the provided $time string based on the passed or configured date time format. This method is locale dependent, Any string that is passed to this function will be interpreted as a locale dependent string.
Resets the format used to the default when converting an instance of this type to a string
Sets the default format used when converting this object to JSON
Sets the default format used when type converting instances of this type to string
Resets the date to the first day of week (defined in $weekStartsAt) and the time to 00:00:00
Returns either a relative or a formatted absolute date depending on the difference between the current time and this object.
__construct(mixed $time, mixed $tz)
Create a new mutable time instance.
string|int|\DateTimeInterface|null
$time optional Fixed or relative time
\DateTimeZone|string|null
$tz optional The timezone for the instance
__debugInfo()
Returns the data that should be displayed when debugging this object
array
__get(string $name)
Get a part of the ChronosInterface object
string
$name The property name to read.
string|int|bool|\DateTimeZone
The property value.
InvalidArgumentException
__isset(string $name)
Check if an attribute exists on the object
string
$name The property name to check.
bool
Whether or not the property exists.
__set(string $name, mixed $value)
Set a part of the ChronosInterface object
string
$name The property to set.
string|int|\DateTimeZone
$value The value to set.
InvalidArgumentException
__toString()
Format the instance as a string using the set format
string
_formatObject(mixed $date, mixed $format, ?string $locale)
Returns a translated and localized date string.
Implements what IntlDateFormatter::formatObject() is in PHP 5.5+
\DateTime|\DateTimeImmutable
$date Date.
string|int|int[]
$format Format.
string|null
$locale The locale name in which the date should be displayed.
string
addDay(int $value)
Add a day to the instance
int
$value optional The number of days to add.
static
addDays(int $value)
Add days to the instance. Positive $value travels forward while negative $value travels into the past.
int
$value The number of days to add.
static
addHour(int $value)
Add an hour to the instance
int
$value optional The number of hours to add.
static
addHours(int $value)
Add hours to the instance. Positive $value travels forward while negative $value travels into the past.
int
$value The number of hours to add.
static
addMinute(int $value)
Add a minute to the instance
int
$value optional The number of minutes to add.
static
addMinutes(int $value)
Add minutes to the instance. Positive $value travels forward while negative $value travels into the past.
int
$value The number of minutes to add.
static
addMonth(int $value)
Add a month to the instance.
Has the same behavior as addMonths()
.
int
$value optional The number of months to add.
static
addMonthWithOverflow(int $value)
Add a month with overflow to the instance.
Has the same behavior as addMonthsWithOverflow()
.
int
$value optional The number of months to add.
static
addMonths(int $value)
Add months to the instance. Positive $value travels forward while negative $value travels into the past.
If the new date does not exist, the last day of the month is used instead instead of overflowing into the next month.
(new Chronos('2015-01-03'))->addMonths(1); // Results in 2015-02-03 (new Chronos('2015-01-31'))->addMonths(1); // Results in 2015-02-28
int
$value The number of months to add.
static
addMonthsWithOverflow(int $value)
Add months with overflowing to the instance. Positive $value travels forward while negative $value travels into the past.
If the new date does not exist, the days overflow into the next month.
(new Chronos('2012-01-30'))->addMonthsWithOverflow(1); // Results in 2013-03-01
int
$value The number of months to add.
static
addSecond(int $value)
Add a second to the instance
int
$value optional The number of seconds to add.
static
addSeconds(int $value)
Add seconds to the instance. Positive $value travels forward while negative $value travels into the past.
int
$value The number of seconds to add.
static
addWeek(int $value)
Add a week to the instance
int
$value optional The number of weeks to add.
static
addWeekday(int $value)
Add a weekday to the instance
int
$value optional The number of weekdays to add.
static
addWeekdays(int $value)
Add weekdays to the instance. Positive $value travels forward while negative $value travels into the past.
int
$value The number of weekdays to add.
static
addWeeks(int $value)
Add weeks to the instance. Positive $value travels forward while negative $value travels into the past.
int
$value The number of weeks to add.
static
addYear(int $value)
Add a year to the instance
Has the same behavior as addYears()
.
int
$value optional The number of years to add.
static
addYearWithOverflow(int $value)
Add a year with overflow to the instance
Has the same behavior as addYearsWithOverflow()
.
int
$value optional The number of years to add.
static
addYears(int $value)
Add years to the instance. Positive $value travel forward while negative $value travel into the past.
If the new date does not exist, the last day of the month is used instead instead of overflowing into the next month.
(new Chronos('2015-01-03'))->addYears(1); // Results in 2016-01-03 (new Chronos('2012-02-29'))->addYears(1); // Results in 2013-02-28
int
$value The number of years to add.
static
addYearsWithOverflow(int $value)
Add years with overflowing to the instance. Positive $value travels forward while negative $value travels into the past.
If the new date does not exist, the days overflow into the next month.
(new Chronos('2012-02-29'))->addYearsWithOverflow(1); // Results in 2013-03-01
int
$value The number of years to add.
static
average(?\Cake\Chronos\ChronosInterface $dt)
Modify the current instance to the average of a given instance (default now) and the current instance.
\Cake\Chronos\ChronosInterface
$dt optional The instance to compare with.
static
between(\Cake\Chronos\ChronosInterface $dt1, \Cake\Chronos\ChronosInterface $dt2, bool $equal)
Determines if the instance is between two others
\Cake\Chronos\ChronosInterface
$dt1 The instance to compare with.
\Cake\Chronos\ChronosInterface
$dt2 The instance to compare with.
bool
$equal optional Indicates if a > and < comparison should be used or <= or >=
bool
closest(\Cake\Chronos\ChronosInterface $dt1, \Cake\Chronos\ChronosInterface $dt2)
Get the closest date from the instance.
\Cake\Chronos\ChronosInterface
$dt1 The instance to compare with.
\Cake\Chronos\ChronosInterface
$dt2 The instance to compare with.
static
copy()
Get a copy of the instance
static
create(?int $year, ?int $month, ?int $day, ?int $hour, ?int $minute, ?int $second, ?int $microsecond, mixed $tz)
Create a new ChronosInterface instance from a specific date and time.
If any of $year, $month or $day are set to null their now() values will be used.
If $hour is null it will be set to its now() value and the default values for $minute, $second and $microsecond will be their now() values. If $hour is not null then the default values for $minute, $second and $microsecond will be 0.
int|null
$year optional The year to create an instance with.
int|null
$month optional The month to create an instance with.
int|null
$day optional The day to create an instance with.
int|null
$hour optional The hour to create an instance with.
int|null
$minute optional The minute to create an instance with.
int|null
$second optional The second to create an instance with.
int|null
$microsecond optional The microsecond to create an instance with.
\DateTimeZone|string|null
$tz optional The DateTimeZone object or timezone name the new instance should use.
static
createFromArray(array $values)
Creates a ChronosInterface instance from an array of date and time values.
The 'year', 'month' and 'day' values must all be set for a date. The time values all default to 0.
The 'timezone' value can be any format supported by \DateTimeZone
.
Allowed values:
(int|string)[]
$values Array of date and time values.
static
createFromDate(?int $year, ?int $month, ?int $day, mixed $tz)
Create a ChronosInterface instance from just a date. The time portion is set to now.
int|null
$year optional The year to create an instance with.
int|null
$month optional The month to create an instance with.
int|null
$day optional The day to create an instance with.
\DateTimeZone|string|null
$tz optional The DateTimeZone object or timezone name the new instance should use.
static
createFromFormat(mixed $format, mixed $time, mixed $tz)
Create a ChronosInterface instance from a specific format
string
$format The date() compatible format string.
string
$time The formatted date string to interpret.
\DateTimeZone|string|null
$tz optional The DateTimeZone object or timezone name the new instance should use.
static
InvalidArgumentException
createFromTime(?int $hour, ?int $minute, ?int $second, ?int $microsecond, mixed $tz)
Create a ChronosInterface instance from just a time. The date portion is set to today.
int|null
$hour optional The hour to create an instance with.
int|null
$minute optional The minute to create an instance with.
int|null
$second optional The second to create an instance with.
int|null
$microsecond optional The microsecond to create an instance with.
\DateTimeZone|string|null
$tz optional The DateTimeZone object or timezone name the new instance should use.
static
createFromTimestamp(int $timestamp, mixed $tz)
Create a ChronosInterface instance from a timestamp
int
$timestamp The timestamp to create an instance from.
\DateTimeZone|string|null
$tz optional The DateTimeZone object or timezone name the new instance should use.
static
createFromTimestampUTC(int $timestamp)
Create a ChronosInterface instance from an UTC timestamp
int
$timestamp The UTC timestamp to create an instance from.
static
day(int $value)
Set the instance's day
int
$value The day value.
static
diffFiltered(\Cake\Chronos\ChronosInterval $ci, callable $callback, ?\Cake\Chronos\ChronosInterface $dt, bool $abs)
Get the difference by the given interval using a filter callable
\Cake\Chronos\ChronosInterval
$ci An interval to traverse by
callable
$callback The callback to use for filtering.
\Cake\Chronos\ChronosInterface|null
$dt optional The instance to difference from.
bool
$abs optional Get the absolute of the difference
int
diffForHumans(?\Cake\Chronos\ChronosInterface $other, bool $absolute)
Get the difference in a human readable format in the current locale.
When comparing a value in the past to default now: 1 hour ago 5 months ago
When comparing a value in the future to default now: 1 hour from now 5 months from now
When comparing a value in the past to another value: 1 hour before 5 months before
When comparing a value in the future to another value: 1 hour after 5 months after
\Cake\Chronos\ChronosInterface|null
$other optional The datetime to compare with.
bool
$absolute optional Removes time difference modifiers ago, after, etc
string
diffFormatter(?\Cake\Chronos\DifferenceFormatterInterface $formatter)
Get the difference formatter instance or overwrite the current one.
\Cake\Chronos\DifferenceFormatterInterface|null
$formatter optional The formatter instance when setting.
\Cake\Chronos\DifferenceFormatterInterface
The formatter instance.
diffInDays(?\Cake\Chronos\ChronosInterface $dt, bool $abs)
Get the difference in days
\Cake\Chronos\ChronosInterface|null
$dt optional The instance to difference from.
bool
$abs optional Get the absolute of the difference
int
diffInDaysFiltered(callable $callback, ?\Cake\Chronos\ChronosInterface $dt, bool $abs)
Get the difference in days using a filter callable
callable
$callback The callback to use for filtering.
\Cake\Chronos\ChronosInterface|null
$dt optional The instance to difference from.
bool
$abs optional Get the absolute of the difference
int
diffInHours(?\Cake\Chronos\ChronosInterface $dt, bool $abs)
Get the difference in hours
\Cake\Chronos\ChronosInterface|null
$dt optional The instance to difference from.
bool
$abs optional Get the absolute of the difference
int
diffInHoursFiltered(callable $callback, ?\Cake\Chronos\ChronosInterface $dt, bool $abs)
Get the difference in hours using a filter callable
callable
$callback The callback to use for filtering.
\Cake\Chronos\ChronosInterface|null
$dt optional The instance to difference from.
bool
$abs optional Get the absolute of the difference
int
diffInMinutes(?\Cake\Chronos\ChronosInterface $dt, bool $abs)
Get the difference in minutes
\Cake\Chronos\ChronosInterface|null
$dt optional The instance to difference from.
bool
$abs optional Get the absolute of the difference
int
diffInMonths(?\Cake\Chronos\ChronosInterface $dt, bool $abs)
Get the difference in months
\Cake\Chronos\ChronosInterface|null
$dt optional The instance to difference from.
bool
$abs optional Get the absolute of the difference
int
diffInSeconds(?\Cake\Chronos\ChronosInterface $dt, bool $abs)
Get the difference in seconds
\Cake\Chronos\ChronosInterface|null
$dt optional The instance to difference from.
bool
$abs optional Get the absolute of the difference
int
diffInWeekdays(?\Cake\Chronos\ChronosInterface $dt, bool $abs)
Get the difference in weekdays
\Cake\Chronos\ChronosInterface|null
$dt optional The instance to difference from.
bool
$abs optional Get the absolute of the difference
int
diffInWeekendDays(?\Cake\Chronos\ChronosInterface $dt, bool $abs)
Get the difference in weekend days using a filter
\Cake\Chronos\ChronosInterface|null
$dt optional The instance to difference from.
bool
$abs optional Get the absolute of the difference
int
diffInWeeks(?\Cake\Chronos\ChronosInterface $dt, bool $abs)
Get the difference in weeks
\Cake\Chronos\ChronosInterface|null
$dt optional The instance to difference from.
bool
$abs optional Get the absolute of the difference
int
diffInYears(?\Cake\Chronos\ChronosInterface $dt, bool $abs)
Get the difference in years
\Cake\Chronos\ChronosInterface|null
$dt optional The instance to difference from.
bool
$abs optional Get the absolute of the difference
int
disableLenientParsing()
Enables lenient parsing for locale formats.
enableLenientParsing()
Enables lenient parsing for locale formats.
endOfCentury()
Resets the date to end of the century and time to 23:59:59
static
endOfDay()
Resets the time to 23:59:59
static
endOfDecade()
Resets the date to end of the decade and time to 23:59:59
static
endOfMonth()
Resets the date to end of the month and time to 23:59:59
static
endOfWeek()
Resets the date to end of week (defined in $weekEndsAt) and time to 23:59:59
static
endOfYear()
Resets the date to end of the year and time to 23:59:59
static
eq(\Cake\Chronos\ChronosInterface $dt)
Determines if the instance is equal to another
\Cake\Chronos\ChronosInterface
$dt The instance to compare with.
bool
equals(\Cake\Chronos\ChronosInterface $dt)
Determines if the instance is equal to another
\Cake\Chronos\ChronosInterface
$dt The instance to compare with.
bool
farthest(\Cake\Chronos\ChronosInterface $dt1, \Cake\Chronos\ChronosInterface $dt2)
Get the farthest date from the instance.
\Cake\Chronos\ChronosInterface
$dt1 The instance to compare with.
\Cake\Chronos\ChronosInterface
$dt2 The instance to compare with.
static
firstOfMonth(?int $dayOfWeek)
Modify to the first occurrence of a given day of the week in the current month. If no dayOfWeek is provided, modify to the first day of the current month. Use the supplied consts to indicate the desired dayOfWeek, ex. static::MONDAY.
int|null
$dayOfWeek optional The day of the week to move to.
mixed
firstOfQuarter(?int $dayOfWeek)
Modify to the first occurrence of a given day of the week in the current quarter. If no dayOfWeek is provided, modify to the first day of the current quarter. Use the supplied consts to indicate the desired dayOfWeek, ex. static::MONDAY.
int|null
$dayOfWeek optional The day of the week to move to.
mixed
firstOfYear(?int $dayOfWeek)
Modify to the first occurrence of a given day of the week in the current year. If no dayOfWeek is provided, modify to the first day of the current year. Use the supplied consts to indicate the desired dayOfWeek, ex. static::MONDAY.
int|null
$dayOfWeek optional The day of the week to move to.
mixed
fromNow(mixed $datetime)
Convenience method for getting the remaining time from a given time.
\DateTime|\DateTimeImmutable
$datetime The date to get the remaining time from.
\DateInterval|bool
The DateInterval object representing the difference between the two dates or FALSE on failure.
getDefaultLocale()
Gets the default locale.
string|null
The default locale string to be used or null.
getDiffFormatter()
Get the difference formatter instance.
\Cake\Chronos\DifferenceFormatterInterface
getLastErrors()
Returns any errors or warnings that were found during the parsing of the last object created by this class.
array
getTestNow()
Get the test instance stored in Chronos
\Cake\Chronos\ChronosInterface|null
the current instance used for testing or null.
getWeekEndsAt()
Get the last day of week
int
getWeekStartsAt()
Get the first day of week
int
getWeekendDays()
Get weekend days
array
greaterThan(\Cake\Chronos\ChronosInterface $dt)
Determines if the instance is greater (after) than another
\Cake\Chronos\ChronosInterface
$dt The instance to compare with.
bool
greaterThanOrEquals(\Cake\Chronos\ChronosInterface $dt)
Determines if the instance is greater (after) than or equal to another
\Cake\Chronos\ChronosInterface
$dt The instance to compare with.
bool
gt(\Cake\Chronos\ChronosInterface $dt)
Determines if the instance is greater (after) than another
\Cake\Chronos\ChronosInterface
$dt The instance to compare with.
bool
gte(\Cake\Chronos\ChronosInterface $dt)
Determines if the instance is greater (after) than or equal to another
\Cake\Chronos\ChronosInterface
$dt The instance to compare with.
bool
hasRelativeKeywords(?string $time)
Determine if there is a relative keyword in the time string, this is to create dates relative to now for test instances. e.g.: next tuesday
string|null
$time The time string to check.
bool
true if there is a keyword, otherwise false
hasTestNow()
Get whether or not Chronos has a test instance set.
bool
True if there is a test instance, otherwise false
hour(int $value)
Set the instance's hour
int
$value The hour value.
static
i18nFormat(mixed $format, mixed $timezone, mixed $locale)
Returns a formatted string for this time object using the preferred format and language for the specified locale.
It is possible to specify the desired format for the string to be displayed. You can either pass IntlDateFormatter
constants as the first argument of this function, or pass a full ICU date formatting string as specified in the following resource: http://www.icu-project.org/apiref/icu4c/classSimpleDateFormat.html#details.
Additional to IntlDateFormatter
constants and date formatting string you can use Time::UNIX_TIMESTAMP_FORMAT to get a unix timestamp
$time = new Time('2014-04-20 22:10'); $time->i18nFormat(); // outputs '4/20/14, 10:10 PM' for the en-US locale $time->i18nFormat(\IntlDateFormatter::FULL); // Use the full date and time format $time->i18nFormat([\IntlDateFormatter::FULL, \IntlDateFormatter::SHORT]); // Use full date but short time format $time->i18nFormat('yyyy-MM-dd HH:mm:ss'); // outputs '2014-04-20 22:10' $time->i18nFormat(Time::UNIX_TIMESTAMP_FORMAT); // outputs '1398031800'
You can control the default format used through Time::setToStringFormat()
.
You can read about the available IntlDateFormatter constants at https://secure.php.net/manual/en/class.intldateformatter.php
If you need to display the date in a different timezone than the one being used for this Time object without altering its internal state, you can pass a timezone string or object as the second parameter.
Finally, should you need to use a different locale for displaying this time object, pass a locale string as the third parameter to this function.
$time = new Time('2014-04-20 22:10'); $time->i18nFormat(null, null, 'de-DE'); $time->i18nFormat(\IntlDateFormatter::FULL, 'Europe/Berlin', 'de-DE');
You can control the default locale used through Time::setDefaultLocale()
. If empty, the default will be taken from the intl.default_locale
ini config.
string|int|int[]|null
$format optional Format string.
string|\DateTimeZone|null
$timezone optional Timezone string or DateTimeZone object in which the date will be displayed. The timezone stored for this object will not be changed.
string|null
$locale optional The locale name in which the date should be displayed (e.g. pt-BR)
string|int
Formatted and translated date string
instance(\DateTimeInterface $dt)
Create a ChronosInterface instance from a DateTimeInterface one
\DateTimeInterface
$dt The datetime instance to convert.
static
isBirthday(\Cake\Chronos\ChronosInterface $dt)
Check if its the birthday. Compares the date/month values of the two dates.
\Cake\Chronos\ChronosInterface
$dt The instance to compare with.
bool
isFriday()
Checks if this day is a Friday.
bool
isFuture()
Determines if the instance is in the future, ie. greater (after) than now
bool
isLastMonth()
Determines if the instance is within the last month
bool
isLastWeek()
Determines if the instance is within the last week
bool
isLastYear()
Determines if the instance is within the last year
bool
isLeapYear()
Determines if the instance is a leap year
bool
isMonday()
Checks if this day is a Monday.
bool
isMutable()
Check if instance of ChronosInterface is mutable.
bool
isNextMonth()
Determines if the instance is within the next month
bool
isNextWeek()
Determines if the instance is within the next week
bool
isNextYear()
Determines if the instance is within the next year
bool
isPast()
Determines if the instance is in the past, ie. less (before) than now
bool
isSameDay(\Cake\Chronos\ChronosInterface $dt)
Checks if the passed in date is the same day as the instance current day.
\Cake\Chronos\ChronosInterface
$dt The instance to check against.
bool
isSaturday()
Checks if this day is a Saturday.
bool
isSunday()
Checks if this day is a Sunday.
bool
isThisMonth()
Returns true if this object represents a date within the current month
bool
isThisWeek()
Returns true if this object represents a date within the current week
bool
isThisYear()
Returns true if this object represents a date within the current year
bool
isThursday()
Checks if this day is a Thursday.
bool
isToday()
Determines if the instance is today
bool
isTomorrow()
Determines if the instance is tomorrow
bool
isTuesday()
Checks if this day is a Tuesday.
bool
isWednesday()
Checks if this day is a Wednesday.
bool
isWeekday()
Determines if the instance is a weekday
bool
isWeekend()
Determines if the instance is a weekend day
bool
isWithinNext(mixed $timeInterval)
Returns true this instance will happen within the specified interval
string|int
$timeInterval the numeric value with space then time type. Example of valid types: 6 hours, 2 days, 1 minute.
bool
isYesterday()
Determines if the instance is yesterday
bool
jsonSerialize()
Returns a string that should be serialized when converting this object to JSON
string|int
lastOfMonth(?int $dayOfWeek)
Modify to the last occurrence of a given day of the week in the current month. If no dayOfWeek is provided, modify to the last day of the current month. Use the supplied consts to indicate the desired dayOfWeek, ex. static::MONDAY.
int|null
$dayOfWeek optional The day of the week to move to.
mixed
lastOfQuarter(?int $dayOfWeek)
Modify to the last occurrence of a given day of the week in the current quarter. If no dayOfWeek is provided, modify to the last day of the current quarter. Use the supplied consts to indicate the desired dayOfWeek, ex. static::MONDAY.
int|null
$dayOfWeek optional The day of the week to move to.
mixed
lastOfYear(?int $dayOfWeek)
Modify to the last occurrence of a given day of the week in the current year. If no dayOfWeek is provided, modify to the last day of the current year. Use the supplied consts to indicate the desired dayOfWeek, ex. static::MONDAY.
int|null
$dayOfWeek optional The day of the week to move to.
mixed
lenientParsingEnabled()
Gets whether locale format parsing is set to lenient.
bool
lessThan(\Cake\Chronos\ChronosInterface $dt)
Determines if the instance is less (before) than another
\Cake\Chronos\ChronosInterface
$dt The instance to compare with.
bool
lessThanOrEquals(\Cake\Chronos\ChronosInterface $dt)
Determines if the instance is less (before) or equal to another
\Cake\Chronos\ChronosInterface
$dt The instance to compare with.
bool
listTimezones(mixed $filter, ?string $country, mixed $options)
Get list of timezone identifiers
int|string|null
$filter optional A regex to filter identifier Or one of DateTimeZone class constants
string|null
$country optional A two-letter ISO 3166-1 compatible country code. This option is only used when $filter is set to DateTimeZone::PER_COUNTRY
bool|array
$options optional If true (default value) groups the identifiers list by primary region. Otherwise, an array containing group
, abbr
, before
, and after
keys. Setting group
and abbr
to true will group results and append timezone abbreviation in the display value. Set before
and after
to customize the abbreviation wrapper.
array
List of timezone identifiers
lt(\Cake\Chronos\ChronosInterface $dt)
Determines if the instance is less (before) than another
\Cake\Chronos\ChronosInterface
$dt The instance to compare with.
bool
lte(\Cake\Chronos\ChronosInterface $dt)
Determines if the instance is less (before) or equal to another
\Cake\Chronos\ChronosInterface
$dt The instance to compare with.
bool
max(?\Cake\Chronos\ChronosInterface $dt)
Get the maximum instance between a given instance (default now) and the current instance.
\Cake\Chronos\ChronosInterface|null
$dt optional The instance to compare with.
static
maxValue()
Create a ChronosInterface instance for the greatest supported date.
\Cake\Chronos\ChronosInterface
min(?\Cake\Chronos\ChronosInterface $dt)
Get the minimum instance between a given instance (default now) and the current instance.
\Cake\Chronos\ChronosInterface|null
$dt optional The instance to compare with.
static
minValue()
Create a ChronosInterface instance for the lowest supported date.
\Cake\Chronos\ChronosInterface
minute(int $value)
Set the instance's minute
int
$value The minute value.
static
modify(string $relative)
string
$relative month(int $value)
Set the instance's month
int
$value The month value.
static
ne(\Cake\Chronos\ChronosInterface $dt)
Determines if the instance is not equal to another
\Cake\Chronos\ChronosInterface
$dt The instance to compare with.
bool
next(?int $dayOfWeek)
Modify to the next occurrence of a given day of the week.
If no dayOfWeek is provided, modify to the next occurrence of the current day of the week. Use the supplied consts to indicate the desired dayOfWeek, ex. static::MONDAY.
int|null
$dayOfWeek optional The day of the week to move to.
mixed
nice(mixed $timezone, mixed $locale)
Returns a nicely formatted date string for this object.
The format to be used is stored in the static property Time::niceFormat
.
string|\DateTimeZone|null
$timezone optional Timezone string or DateTimeZone object in which the date will be displayed. The timezone stored for this object will not be changed.
string|null
$locale optional The locale name in which the date should be displayed (e.g. pt-BR)
string
Formatted date string
notEquals(\Cake\Chronos\ChronosInterface $dt)
Determines if the instance is not equal to another
\Cake\Chronos\ChronosInterface
$dt The instance to compare with.
bool
now(mixed $tz)
Get a ChronosInterface instance for the current date and time
\DateTimeZone|string|null
$tz The DateTimeZone object or timezone name.
static
nthOfMonth(int $nth, int $dayOfWeek)
Modify to the given occurrence of a given day of the week in the current month. If the calculated occurrence is outside the scope of the current month, then return false and no modifications are made.
Use the supplied consts to indicate the desired dayOfWeek, ex. static::MONDAY.
int
$nth The offset to use.
int
$dayOfWeek The day of the week to move to.
mixed
nthOfQuarter(int $nth, int $dayOfWeek)
Modify to the given occurrence of a given day of the week in the current quarter. If the calculated occurrence is outside the scope of the current quarter, then return false and no modifications are made.
Use the supplied consts to indicate the desired dayOfWeek, ex. static::MONDAY.
int
$nth The offset to use.
int
$dayOfWeek The day of the week to move to.
mixed
nthOfYear(int $nth, int $dayOfWeek)
Modify to the given occurrence of a given day of the week in the current year. If the calculated occurrence is outside the scope of the current year, then return false and no modifications are made.
Use the supplied consts to indicate the desired dayOfWeek, ex. static::MONDAY.
int
$nth The offset to use.
int
$dayOfWeek The day of the week to move to.
mixed
parse(mixed $time, mixed $tz)
Create a ChronosInterface instance from a string. This is an alias for the constructor that allows better fluent syntax as it allows you to do ChronosInterface::parse('Monday next week')->fn() rather than (new Chronos('Monday next week'))->fn()
\DateTimeInterface|string|int
$time optional The strtotime compatible string to parse
\DateTimeZone|string|null
$tz optional The DateTimeZone object or timezone name.
static
parseDate(string $date, mixed $format)
Returns a new Time object after parsing the provided $date string based on the passed or configured date time format. This method is locale dependent, Any string that is passed to this function will be interpreted as a locale dependent string.
When no $format is provided, the wordFormat
format will be used.
If it was impossible to parse the provided time, null will be returned.
Example:
$time = Time::parseDate('10/13/2013'); $time = Time::parseDate('13 Oct, 2013', 'dd MMM, y'); $time = Time::parseDate('13 Oct, 2013', IntlDateFormatter::SHORT);
string
$date The date string to parse.
string|int|array|null
$format optional Any format accepted by IntlDateFormatter.
static|null
parseDateTime(string $time, mixed $format, mixed $tz)
Returns a new Time object after parsing the provided time string based on the passed or configured date time format. This method is locale dependent, Any string that is passed to this function will be interpreted as a locale dependent string.
When no $format is provided, the toString
format will be used.
Unlike DateTime, the time zone of the returned instance is always converted to $tz
(default time zone if null) even if the $time
string specified a time zone. This is a limitation of IntlDateFormatter.
If it was impossible to parse the provided time, null will be returned.
Example:
$time = Time::parseDateTime('10/13/2013 12:54am'); $time = Time::parseDateTime('13 Oct, 2013 13:54', 'dd MMM, y H:mm'); $time = Time::parseDateTime('10/10/2015', [IntlDateFormatter::SHORT, IntlDateFormatter::NONE]);
string
$time The time string to parse.
string|int|int[]|null
$format optional Any format accepted by IntlDateFormatter.
\DateTimeZone|string|null
$tz optional The timezone for the instance
static|null
parseTime(string $time, mixed $format)
Returns a new Time object after parsing the provided $time string based on the passed or configured date time format. This method is locale dependent, Any string that is passed to this function will be interpreted as a locale dependent string.
When no $format is provided, the IntlDateFormatter::SHORT format will be used.
If it was impossible to parse the provided time, null will be returned.
Example:
$time = Time::parseTime('11:23pm');
string
$time The time string to parse.
string|int|null
$format optional Any format accepted by IntlDateFormatter.
static|null
previous(?int $dayOfWeek)
Modify to the previous occurrence of a given day of the week.
If no dayOfWeek is provided, modify to the previous occurrence of the current day of the week. Use the supplied consts to indicate the desired dayOfWeek, ex. static::MONDAY.
int|null
$dayOfWeek optional The day of the week to move to.
mixed
resetToStringFormat()
Resets the format used to the default when converting an instance of this type to a string
safeCreateDateTimeZone(mixed $object)
Creates a DateTimeZone from a string or a DateTimeZone
\DateTimeZone|string|null
$object The value to convert.
\DateTimeZone
InvalidArgumentException
second(int $value)
Set the instance's second
int
$value The seconds value.
static
secondsSinceMidnight()
The number of seconds since midnight.
int
secondsUntilEndOfDay()
The number of seconds until 23:59:59.
int
setDate(mixed $year, mixed $month, mixed $day)
Set the date to a different date.
Workaround for a PHP bug related to the first day of a month
int
$year The year to set.
int
$month The month to set.
int
$day The day to set.
static
setDateTime(int $year, int $month, int $day, int $hour, int $minute, int $second)
Set the date and time all together
int
$year The year to set.
int
$month The month to set.
int
$day The day to set.
int
$hour The hour to set.
int
$minute The minute to set.
int
$second optional The second to set.
static
setDefaultLocale(?string $locale)
Sets the default locale.
Set to null to use IntlDateFormatter default.
string|null
$locale optional The default locale string to be used.
setDiffFormatter(\Cake\Chronos\DifferenceFormatterInterface $formatter)
Set the difference formatter instance.
\Cake\Chronos\DifferenceFormatterInterface
$formatter The formatter instance when setting.
setJsonEncodeFormat(mixed $format)
Sets the default format used when converting this object to JSON
The format should be either the formatting constants from IntlDateFormatter as described in (https://secure.php.net/manual/en/class.intldateformatter.php) or a pattern as specified in (http://www.icu-project.org/apiref/icu4c/classSimpleDateFormat.html#details)
It is possible to provide an array of 2 constants. In this case, the first position will be used for formatting the date part of the object and the second position will be used to format the time part.
Alternatively, the format can provide a callback. In this case, the callback can receive this datetime object and return a formatted string.
string|array|int|\Closure
$format Format.
setTestNow(mixed $testNow)
Set the test now used by Date and Time classes provided by Chronos
\Cake\Chronos\ChronosInterface|string|null
$testNow optional The instance to use for all future instances.
setTimeFromTimeString(string $time)
Set the time by time string
string
$time Time as string.
static
setTimezone(mixed $value)
Set the instance's timezone from a string or object
\DateTimeZone|string
$value The DateTimeZone object or timezone name to use.
static
setToStringFormat(mixed $format)
Sets the default format used when type converting instances of this type to string
The format should be either the formatting constants from IntlDateFormatter as described in (https://secure.php.net/manual/en/class.intldateformatter.php) or a pattern as specified in (http://www.icu-project.org/apiref/icu4c/classSimpleDateFormat.html#details)
It is possible to provide an array of 2 constants. In this case, the first position will be used for formatting the date part of the object and the second position will be used to format the time part.
string|int|int[]
$format Format.
setWeekEndsAt(int $day)
Set the last day of week
int
$day The day the week ends with.
setWeekStartsAt(int $day)
Set the first day of week
int
$day The day the week starts with.
setWeekendDays(array $days)
Set weekend days
array
$days Which days are 'weekends'.
startOfCentury()
Resets the date to the first day of the century and the time to 00:00:00
static
startOfDay()
Resets the time to 00:00:00
static
startOfDecade()
Resets the date to the first day of the decade and the time to 00:00:00
static
startOfMonth()
Resets the date to the first day of the month and the time to 00:00:00
static
startOfWeek()
Resets the date to the first day of week (defined in $weekStartsAt) and the time to 00:00:00
static
startOfYear()
Resets the date to the first day of the year and the time to 00:00:00
static
subDay(int $value)
Remove a day from the instance
int
$value optional The number of days to remove.
static
subDays(int $value)
Remove days from the instance
int
$value The number of days to remove.
static
subHour(int $value)
Remove an hour from the instance
int
$value optional The number of hours to remove.
static
subHours(int $value)
Remove hours from the instance
int
$value The number of hours to remove.
static
subMinute(int $value)
Remove a minute from the instance
int
$value optional The number of minutes to remove.
static
subMinutes(int $value)
Remove minutes from the instance
int
$value The number of minutes to remove.
static
subMonth(int $value)
Remove a month from the instance
Has the same behavior as addMonths()
.
int
$value optional The number of months to remove.
static
subMonthWithOverflow(int $value)
Remove a month with overflow from the instance.
Has the same behavior as addMonthsWithOverflow()
.
int
$value optional The number of months to remove.
static
subMonths(int $value)
Remove months from the instance.
Has the same behavior as addMonths()
.
int
$value The number of months to remove.
static
subMonthsWithOverflow(int $value)
Remove months with overflow from the instance.
Has the same behavior as addMonthsWithOverflow()
.
int
$value The number of months to remove.
static
subSecond(int $value)
Remove a second from the instance
int
$value optional The number of seconds to remove.
static
subSeconds(int $value)
Remove seconds from the instance
int
$value The number of seconds to remove.
static
subWeek(int $value)
Remove a week from the instance
int
$value optional The number of weeks to remove.
static
subWeekday(int $value)
Remove a weekday from the instance
int
$value optional The number of weekdays to remove.
static
subWeekdays(int $value)
Remove weekdays from the instance
int
$value The number of weekdays to remove.
static
subWeeks(int $value)
Remove weeks to the instance
int
$value The number of weeks to remove.
static
subYear(int $value)
Remove a year from the instance.
Has the same behavior as addYears()
.
int
$value optional The number of years to remove.
static
subYearWithOverflow(int $value)
Remove a year with overflow from the instance
Has the same behavior as addYearsWithOverflow()
.
int
$value optional The number of years to remove.
static
subYears(int $value)
Remove years from the instance.
Has the same behavior as addYears()
.
int
$value The number of years to remove.
static
subYearsWithOverflow(int $value)
Remove years with overflow from the instance
Has the same behavior as addYearsWithOverflow()
.
int
$value The number of years to remove.
static
timeAgoInWords(array $options)
Returns either a relative or a formatted absolute date depending on the difference between the current time and this object.
from
=> another Time object representing the "now" timeformat
=> a fall back format if the relative time is longer than the duration specified by endaccuracy
=> Specifies how accurate the date should be described (array) end
=> The end of relative time tellingrelativeString
=> The printf
compatible string when outputting relative timeabsoluteString
=> The printf
compatible string when outputting absolute timetimezone
=> The user timezone the timestamp should be formatted in.Relative dates look something like this:
Default date formatting is d/M/YY e.g: on 18/2/09. Formatting is done internally using i18nFormat
, see the method for the valid formatting strings
The returned string includes 'ago' or 'on' and assumes you'll properly add a word like 'Posted ' before the function output.
NOTE: If the difference is one week or more, the lowest level of accuracy is day
array
$options optional Array of options.
string
Relative time string.
timestamp(int $value)
Set the instance's timestamp
int
$value The timestamp value to set.
static
timezone(mixed $value)
Alias for setTimezone()
\DateTimeZone|string
$value The DateTimeZone object or timezone name to use.
static
toAtomString()
Format the instance as ATOM
string
toCookieString()
Format the instance as COOKIE
string
toDateString()
Format the instance as date
string
toDateTimeString()
Format the instance as date and time
string
toDayDateTimeString()
Format the instance with day, date and time
string
toFormattedDateString()
Format the instance as a readable date
string
toImmutable()
Create a new immutable instance from current mutable instance.
\Cake\Chronos\Chronos
toIso8601String()
Format the instance as ISO8601
string
toQuarter(bool $range)
Returns the quarter
bool
$range optional Range.
string[]|int
1, 2, 3, or 4 quarter of year, or array if $range true
toRfc1036String()
Format the instance as RFC1036
string
toRfc1123String()
Format the instance as RFC1123
string
toRfc2822String()
Format the instance as RFC2822
string
toRfc3339String()
Format the instance as RFC3339
string
toRfc822String()
Format the instance as RFC822
string
toRfc850String()
Format the instance as RFC850
string
toRssString()
Format the instance as RSS
string
toTimeString()
Format the instance as time
string
toUnixString()
Returns a UNIX timestamp.
string
UNIX timestamp
toW3cString()
Format the instance as W3C
string
toWeek()
today(mixed $tz)
Create a ChronosInterface instance for today
\DateTimeZone|string|null
$tz optional The timezone to use.
static
tomorrow(mixed $tz)
Create a ChronosInterface instance for tomorrow
\DateTimeZone|string|null
$tz optional The DateTimeZone object or timezone name the new instance should use.
static
tz(mixed $value)
Alias for setTimezone()
\DateTimeZone|string
$value The DateTimeZone object or timezone name to use.
static
wasWithinLast(mixed $timeInterval)
Returns true this instance happened within the specified interval
string|int
$timeInterval the numeric value with space then time type. Example of valid types: 6 hours, 2 days, 1 minute.
bool
year(int $value)
Set the instance's year
int
$value The year value.
static
yesterday(mixed $tz)
Create a ChronosInterface instance for yesterday
\DateTimeZone|string|null
$tz optional The DateTimeZone object or timezone name the new instance should use.
static
In-memory cache of date formatters
\IntlDateFormatter[]
The format to use when converting this object to JSON.
The format should be either the formatting constants from IntlDateFormatter as described in (https://secure.php.net/manual/en/class.intldateformatter.php) or a pattern as specified in (http://www.icu-project.org/apiref/icu4c/classSimpleDateFormat.html#details)
It is possible to provide an array of 2 constants. In this case, the first position will be used for formatting the date part of the object and the second position will be used to format the time part.
string|int|int[]|\Closure
Holds the last error generated by createFromFormat
array
The format to use when formatting a time using Cake\I18n\Time::i18nFormat()
and __toString
. This format is also used by parseDateTime()
.
The format should be either the formatting constants from IntlDateFormatter as described in (https://secure.php.net/manual/en/class.intldateformatter.php) or a pattern as specified in (http://www.icu-project.org/apiref/icu4c/classSimpleDateFormat.html#details)
It is possible to provide an array of 2 constants. In this case, the first position will be used for formatting the date part of the object and the second position will be used to format the time part.
string|int|int[]
Names of days of the week.
array
The default locale to be used for displaying formatted date strings.
Use static::setDefaultLocale() and static::getDefaultLocale() instead.
string|null
Instance of the diff formatting object.
\Cake\Chronos\DifferenceFormatterInterface
Whether lenient parsing is enabled for IntlDateFormatter.
Defaults to true which is the default for IntlDateFormatter.
bool
The format to use when formatting a time using Cake\I18n\Time::nice()
The format should be either the formatting constants from IntlDateFormatter as described in (https://secure.php.net/manual/en/class.intldateformatter.php) or a pattern as specified in (http://www.icu-project.org/apiref/icu4c/classSimpleDateFormat.html#details)
It is possible to provide an array of 2 constants. In this case, the first position will be used for formatting the date part of the object and the second position will be used to format the time part.
string|int|int[]
Regex for relative period.
string
Format to use for __toString method when type juggling occurs.
string
Last day of week
int
First day of week
int
Days of weekend
array
The format to use when formatting a time using Time::timeAgoInWords()
and the difference is less than Time::$wordEnd
string[]
The end of relative time telling
string
The format to use when formatting a time using Cake\I18n\Time::timeAgoInWords()
and the difference is more than Cake\I18n\Time::$wordEnd
string|int|int[]
© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.1/class-Cake.I18n.Time.html