Class Time
Extends time class provided by Chronos.
Adds handy methods and locale-aware formatting helpers.
Constants
Property Summary
-
$_jsonEncodeFormat protected static
Closure|string|intThe format to use when converting this object to JSON.
-
$_toStringFormat protected static
string|intThe format to use when formatting a time using
Cake\I18n\Time::i18nFormat()and__toString. -
$formatters protected static
array<string, \IntlDateFormatter>In-memory cache of date formatters
-
$niceFormat public static
string|intThe format to use when formatting a time using
Cake\I18n\Time::nice() -
$ticks protected
int -
$toStringFormat protected static
stringFormat to use for __toString method.
Method Summary
-
__construct() public
Copies time from onther instance or from time string in the format HH[:.]mm or HH[:.]mm[:.]ss.u.
-
__toString() public
Format the instance as a string using the set format
-
_formatObject() protected
Returns a translated and localized date string. Implements what IntlDateFormatter::formatObject() is in PHP 5.5+
-
_parseDateTime() protected static
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.
-
between() public
Returns whether time is between time range.
-
endOfDay() public static
Returns instance set to end of day - either 23:59:59 or 23:59:59.999999 if
$microsecondsis true -
equals() public
Returns whether time is equal to target time.
-
format() public
Formats string using the same syntax as
DateTimeImmutable::format(). -
getHours() public
Returns clock hours.
-
getMicroseconds() public
Returns clock microseconds.
-
getMinutes() public
Returns clock minutes.
-
getSeconds() public
Return clock seconds.
-
greaterThan() public
Returns whether time is greater than target time.
-
greaterThanOrEquals() public
Returns whether time is greater than or equal to target time.
-
i18nFormat() public
Returns a formatted string for this time object using the preferred format and language for the specified locale.
-
jsonSerialize() public
Returns a string that should be serialized when converting this object to JSON
-
lessThan() public
Returns whether time is less than target time.
-
lessThanOrEquals() public
Returns whether time is less than or equal to target time.
-
midnight() public static
Returns instance set to midnight.
-
mod() protected static
-
nice() public
Returns a nicely formatted date string for this object.
-
noon() public static
Returns instance set to noon.
-
now() public static
Returns instance set to server time.
-
parse() public static
Copies time from onther instance or from string in the format HH[:.]mm or HH[:.]mm[:.]ss.u
-
parseString() protected static
-
parseTime() public static
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 passed to this function will be interpreted as a locale dependent string.
-
resetToStringFormat() public static
Resets the format used to the default when converting an instance of this type to a string
-
setHours() public
Set clock hours.
-
setJsonEncodeFormat() public static
Sets the default format used when converting this object to JSON
-
setMicroseconds() public
Sets clock microseconds.
-
setMinutes() public
Set clock minutes.
-
setSeconds() public
Set clock seconds.
-
setTime() public
Sets clock time.
-
setToStringFormat() public static
Sets the default format used when type converting instances of this type to string
-
toDateTimeImmutable() public
Returns an
DateTimeImmutableinstance set to this clock time. -
toNative() public
Returns an
DateTimeImmutableinstance set to this clock time.
Method Detail
__construct() ¶ public
__construct(Cake\Chronos\ChronosTime|DateTimeInterface|string|null $time = null, DateTimeZone|string|null $timezone = null)
Copies time from onther instance or from time string in the format HH[:.]mm or HH[:.]mm[:.]ss.u.
Defaults to server time.
Parameters
-
Cake\Chronos\ChronosTime|DateTimeInterface|string|null$time optional Time
-
DateTimeZone|string|null$timezone optional The timezone to use for now
__toString() ¶ public
__toString(): string
Format the instance as a string using the set format
Returns
string_formatObject() ¶ protected
_formatObject(DateTimeInterface $date, array<int>|string $format, string|null $locale): string
Returns a translated and localized date string. Implements what IntlDateFormatter::formatObject() is in PHP 5.5+
Parameters
-
DateTimeInterface$date Date.
-
array<int>|string$format Format.
-
string|null$locale The locale name in which the date should be displayed.
Returns
string_parseDateTime() ¶ protected static
_parseDateTime(string $time, array<int>|string $format, DateTimeZone|string|null $tz = null): static|null
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.
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]);
Parameters
-
string$time The time string to parse.
-
array<int>|string$format Any format accepted by IntlDateFormatter.
-
DateTimeZone|string|null$tz optional The timezone for the instance
Returns
static|nullbetween() ¶ public
between(Cake\Chronos\ChronosTime $start, Cake\Chronos\ChronosTime $end, bool $equals = true): bool
Returns whether time is between time range.
Parameters
-
Cake\Chronos\ChronosTime$start Start of target range
-
Cake\Chronos\ChronosTime$end End of target range
-
bool$equals optional Whether to include the beginning and end of range
Returns
boolendOfDay() ¶ public static
endOfDay(bool $microseconds = false): static
Returns instance set to end of day - either
23:59:59 or 23:59:59.999999 if $microseconds is true
Parameters
-
bool$microseconds optional Whether to set microseconds or not
Returns
staticequals() ¶ public
equals(Cake\Chronos\ChronosTime $target): bool
Returns whether time is equal to target time.
Parameters
-
Cake\Chronos\ChronosTime$target Target time
Returns
boolformat() ¶ public
format(string $format): string
Formats string using the same syntax as DateTimeImmutable::format().
As this uses DateTimeImmutable::format() to format the string, non-time formatters will still be interpreted. Be sure to escape those characters first.
Parameters
-
string$format Format string
Returns
stringgreaterThan() ¶ public
greaterThan(Cake\Chronos\ChronosTime $target): bool
Returns whether time is greater than target time.
Parameters
-
Cake\Chronos\ChronosTime$target Target time
Returns
boolgreaterThanOrEquals() ¶ public
greaterThanOrEquals(Cake\Chronos\ChronosTime $target): bool
Returns whether time is greater than or equal to target time.
Parameters
-
Cake\Chronos\ChronosTime$target Target time
Returns
booli18nFormat() ¶ public
i18nFormat(string|int|null $format = null, string|null $locale = null): string|int
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: https://unicode-org.github.io/icu/userguide/format_parse/datetime/#datetime-format-syntax.
Examples
$time = new Time('23:10:10');
$time->i18nFormat();
$time->i18nFormat(\IntlDateFormatter::FULL);
$time->i18nFormat("HH':'mm':'ss");
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
Should you need to use a different locale for displaying this time object, pass a locale string as the third parameter to this function.
Examples
$time = new Time('2014-04-20');
$time->i18nFormat('de-DE');
$time->i18nFormat(\IntlDateFormatter::FULL, 'de-DE');
You can control the default locale used through DateTime::setDefaultLocale().
If empty, the default will be taken from the intl.default_locale ini config.
Parameters
-
string|int|null$format optional Format string.
-
string|null$locale optional The locale name in which the time should be displayed (e.g. pt-BR)
Returns
string|intFormatted and translated time string
jsonSerialize() ¶ public
jsonSerialize(): string|int
Returns a string that should be serialized when converting this object to JSON
Returns
string|intlessThan() ¶ public
lessThan(Cake\Chronos\ChronosTime $target): bool
Returns whether time is less than target time.
Parameters
-
Cake\Chronos\ChronosTime$target Target time
Returns
boollessThanOrEquals() ¶ public
lessThanOrEquals(Cake\Chronos\ChronosTime $target): bool
Returns whether time is less than or equal to target time.
Parameters
-
Cake\Chronos\ChronosTime$target Target time
Returns
boolnice() ¶ public
nice(string|null $locale = null): string
Returns a nicely formatted date string for this object.
The format to be used is stored in the static property Time::$niceFormat.
Parameters
-
string|null$locale optional The locale name in which the date should be displayed (e.g. pt-BR)
Returns
stringFormatted date string
now() ¶ public static
now(DateTimeZone|string|null $timezone = null): static
Returns instance set to server time.
Parameters
-
DateTimeZone|string|null$timezone optional The timezone to use for now
Returns
staticparse() ¶ public static
parse(Cake\Chronos\ChronosTime|DateTimeInterface|string $time = null, DateTimeZone|string|null $timezone = null): static
Copies time from onther instance or from string in the format HH[:.]mm or HH[:.]mm[:.]ss.u
Defaults to server time.
Parameters
-
Cake\Chronos\ChronosTime|DateTimeInterface|string$time optional Time
-
DateTimeZone|string|null$timezone optional The timezone to use for now
Returns
staticparseString() ¶ protected static
parseString(string $time): int
Parameters
-
string$time Time string in the format HH[:.]mm or HH[:.]mm[:.]ss.u
Returns
intparseTime() ¶ public static
parseTime(string $time, string|int|null $format = null): static|null
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 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');
Parameters
-
string$time The time string to parse.
-
string|int|null$format optional Any format accepted by IntlDateFormatter.
Returns
static|nullresetToStringFormat() ¶ public static
resetToStringFormat(): void
Resets the format used to the default when converting an instance of this type to a string
Returns
voidsetHours() ¶ public
setHours(int $hours): static
Set clock hours.
Parameters
-
int$hours Clock hours
Returns
staticsetJsonEncodeFormat() ¶ public static
setJsonEncodeFormat(Closure|string|int $format): void
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)
Alternatively, the format can provide a callback. In this case, the callback can receive this object and return a formatted string.
Parameters
-
Closure|string|int$format Format.
Returns
voidSee Also
setMicroseconds() ¶ public
setMicroseconds(int $microseconds): static
Sets clock microseconds.
Parameters
-
int$microseconds Clock microseconds
Returns
staticsetMinutes() ¶ public
setMinutes(int $minutes): static
Set clock minutes.
Parameters
-
int$minutes Clock minutes
Returns
staticsetSeconds() ¶ public
setSeconds(int $seconds): static
Set clock seconds.
Parameters
-
int$seconds Clock seconds
Returns
staticsetTime() ¶ public
setTime(int $hours = 0, int $minutes = 0, int $seconds = 0, int $microseconds = 0): static
Sets clock time.
Parameters
-
int$hours optional Clock hours
-
int$minutes optional Clock minutes
-
int$seconds optional Clock seconds
-
int$microseconds optional Clock microseconds
Returns
staticsetToStringFormat() ¶ public static
setToStringFormat(string|int $format): void
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 (https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classSimpleDateFormat.html#details)
Parameters
-
string|int$format Format.
Returns
voidtoDateTimeImmutable() ¶ public
toDateTimeImmutable(DateTimeZone|string|null $timezone = null): DateTimeImmutable
Returns an DateTimeImmutable instance set to this clock time.
Parameters
-
DateTimeZone|string|null$timezone optional Time zone the DateTimeImmutable instance will be in
Returns
DateTimeImmutabletoNative() ¶ public
toNative(DateTimeZone|string|null $timezone = null): DateTimeImmutable
Returns an DateTimeImmutable instance set to this clock time.
Alias of toDateTimeImmutable().
Parameters
-
DateTimeZone|string|null$timezone optional Time zone the DateTimeImmutable instance will be in
Returns
DateTimeImmutableProperty Detail
$_jsonEncodeFormat ¶ protected static
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 (https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classSimpleDateFormat.html#details)
Type
Closure|string|int$_toStringFormat ¶ protected static
The format to use when formatting a time using Cake\I18n\Time::i18nFormat()
and __toString.
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 (https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classSimpleDateFormat.html#details)
Type
string|int$formatters ¶ protected static
In-memory cache of date formatters
Type
array<string, \IntlDateFormatter>$niceFormat ¶ public static
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 (https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classSimpleDateFormat.html#details)
Type
string|int