<?php
/**
* Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
*
* Licensed under The MIT License
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
* @copyright Copyright (c) Brian Nesbitt <brian@nesbot.com>
* @link http://cakephp.org CakePHP(tm) Project
* @license http://www.opensource.org/licenses/mit-license.php MIT License
*/
namespace Cake\Chronos;
use DateTimeInterface;
use DateTimeZone;
/**
* An extension to the DateTimeInterface for a friendlier API
*
* @method static modify(string $relative)
*/
interface ChronosInterface extends DateTimeInterface
{
/**
* The day constants
*/
const MONDAY = 1;
const TUESDAY = 2;
const WEDNESDAY = 3;
const THURSDAY = 4;
const FRIDAY = 5;
const SATURDAY = 6;
const SUNDAY = 7;
/**
* Number of X in Y
*/
const YEARS_PER_CENTURY = 100;
const YEARS_PER_DECADE = 10;
const MONTHS_PER_YEAR = 12;
const MONTHS_PER_QUARTER = 3;
const WEEKS_PER_YEAR = 52;
const DAYS_PER_WEEK = 7;
const HOURS_PER_DAY = 24;
const MINUTES_PER_HOUR = 60;
const SECONDS_PER_MINUTE = 60;
/**
* Default format to use for __toString method when type juggling occurs.
*
* @var string
*/
const DEFAULT_TO_STRING_FORMAT = 'Y-m-d H:i:s';
/**
* Get a ChronosInterface instance for the current date and time
*
* @param \DateTimeZone|string|null $tz The DateTimeZone object or timezone name.
* @return static
*/
public static function now($tz);
/**
* Get a copy of the instance
*
* @return static
*/
public function copy();
/**
* Set the instance's year
*
* @param int $value The year value.
* @return static
*/
public function year($value);
/**
* Set the instance's month
*
* @param int $value The month value.
* @return static
*/
public function month($value);
/**
* Set the instance's day
*
* @param int $value The day value.
* @return static
*/
public function day($value);
/**
* Set the instance's hour
*
* @param int $value The hour value.
* @return static
*/
public function hour($value);
/**
* Set the instance's minute
*
* @param int $value The minute value.
* @return static
*/
public function minute($value);
/**
* Set the instance's second
*
* @param int $value The seconds value.
* @return static
*/
public function second($value);
/**
* Set the date and time all together
*
* @param int $year The year to set.
* @param int $month The month to set.
* @param int $day The day to set.
* @param int $hour The hour to set.
* @param int $minute The minute to set.
* @param int $second The second to set.
* @return static
*/
public function setDateTime($year, $month, $day, $hour, $minute, $second = 0);
/**
* Set the time by time string
*
* @param string $time Time as string.
* @return static
*/
public function setTimeFromTimeString($time);
/**
* Set the instance's timestamp
*
* @param int $value The timestamp value to set.
* @return static
*/
public function timestamp($value);
/**
* Alias for setTimezone()
*
* @param \DateTimeZone|string $value The DateTimeZone object or timezone name to use.
* @return static
*/
public function timezone($value);
/**
* Alias for setTimezone()
*
* @param \DateTimeZone|string $value The DateTimeZone object or timezone name to use.
* @return static
*/
public function tz($value);
/**
* Set the instance's timezone from a string or object
*
* @param \DateTimeZone|string $value The DateTimeZone object or timezone name to use.
* @return static
*/
public function setTimezone($value);
/**
* Format the instance as date
*
* @return string
*/
public function toDateString();
/**
* Format the instance as a readable date
*
* @return string
*/
public function toFormattedDateString();
/**
* Format the instance as time
*
* @return string
*/
public function toTimeString();
/**
* Format the instance as date and time
*
* @return string
*/
public function toDateTimeString();
/**
* Format the instance with day, date and time
*
* @return string
*/
public function toDayDateTimeString();
/**
* Format the instance as ATOM
*
* @return string
*/
public function toAtomString();
/**
* Format the instance as COOKIE
*
* @return string
*/
public function toCookieString();
/**
* Format the instance as ISO8601
*
* @return string
*/
public function toIso8601String();
/**
* Format the instance as RFC822
*
* @return string
*/
public function toRfc822String();
/**
* Format the instance as RFC850
*
* @return string
*/
public function toRfc850String();
/**
* Format the instance as RFC1036
*
* @return string
*/
public function toRfc1036String();
/**
* Format the instance as RFC1123
*
* @return string
*/
public function toRfc1123String();
/**
* Format the instance as RFC2822
*
* @return string
*/
public function toRfc2822String();
/**
* Format the instance as RFC3339
*
* @return string
*/
public function toRfc3339String();
/**
* Format the instance as RSS
*
* @return string
*/
public function toRssString();
/**
* Format the instance as W3C
*
* @return string
*/
public function toW3cString();
/**
* Determines if the instance is equal to another
*
* @param \Cake\Chronos\ChronosInterface $dt The instance to compare with.
* @return bool
* @see equals
*/
public function eq(ChronosInterface $dt);
/**
* Determines if the instance is equal to another
*
* @param \Cake\Chronos\ChronosInterface $dt The instance to compare with.
* @return bool
*/
public function equals(ChronosInterface $dt);
/**
* Determines if the instance is not equal to another
*
* @param \Cake\Chronos\ChronosInterface $dt The instance to compare with.
* @return bool
* @see notEquals
*/
public function ne(ChronosInterface $dt);
/**
* Determines if the instance is not equal to another
*
* @param \Cake\Chronos\ChronosInterface $dt The instance to compare with.
* @return bool
*/
public function notEquals(ChronosInterface $dt);
/**
* Determines if the instance is greater (after) than another
*
* @param \Cake\Chronos\ChronosInterface $dt The instance to compare with.
* @return bool
* @see greaterThan
*/
public function gt(ChronosInterface $dt);
/**
* Determines if the instance is greater (after) than another
*
* @param \Cake\Chronos\ChronosInterface $dt The instance to compare with.
* @return bool
*/
public function greaterThan(ChronosInterface $dt);
/**
* Determines if the instance is greater (after) than or equal to another
*
* @param \Cake\Chronos\ChronosInterface $dt The instance to compare with.
* @return bool
* @see greaterThanOrEquals
*/
public function gte(ChronosInterface $dt);
/**
* Determines if the instance is greater (after) than or equal to another
*
* @param \Cake\Chronos\ChronosInterface $dt The instance to compare with.
* @return bool
*/
public function greaterThanOrEquals(ChronosInterface $dt);
/**
* Determines if the instance is less (before) than another
*
* @param \Cake\Chronos\ChronosInterface $dt The instance to compare with.
* @return bool
* @see lessThan
*/
public function lt(ChronosInterface $dt);
/**
* Determines if the instance is less (before) than another
*
* @param \Cake\Chronos\ChronosInterface $dt The instance to compare with.
* @return bool
*/
public function lessThan(ChronosInterface $dt);
/**
* Determines if the instance is less (before) or equal to another
*
* @param \Cake\Chronos\ChronosInterface $dt The instance to compare with.
* @return bool
* @see lessThanOrEquals
*/
public function lte(ChronosInterface $dt);
/**
* Determines if the instance is less (before) or equal to another
*
* @param \Cake\Chronos\ChronosInterface $dt The instance to compare with.
* @return bool
*/
public function lessThanOrEquals(ChronosInterface $dt);
/**
* Determines if the instance is between two others
*
* @param \Cake\Chronos\ChronosInterface $dt1 The instance to compare with.
* @param \Cake\Chronos\ChronosInterface $dt2 The instance to compare with.
* @param bool $equal Indicates if a > and < comparison should be used or <= or >=
* @return bool
*/
public function between(ChronosInterface $dt1, ChronosInterface $dt2, $equal = true);
/**
* Get the closest date from the instance.
*
* @param \Cake\Chronos\ChronosInterface $dt1 The instance to compare with.
* @param \Cake\Chronos\ChronosInterface $dt2 The instance to compare with.
* @return static
*/
public function closest(ChronosInterface $dt1, ChronosInterface $dt2);
/**
* Get the farthest date from the instance.
*
* @param \Cake\Chronos\ChronosInterface $dt1 The instance to compare with.
* @param \Cake\Chronos\ChronosInterface $dt2 The instance to compare with.
* @return static
*/
public function farthest(ChronosInterface $dt1, ChronosInterface $dt2);
/**
* Get the minimum instance between a given instance (default now) and the current instance.
*
* @param \Cake\Chronos\ChronosInterface|null $dt The instance to compare with.
* @return static
*/
public function min(ChronosInterface $dt = null);
/**
* Get the maximum instance between a given instance (default now) and the current instance.
*
* @param \Cake\Chronos\ChronosInterface|null $dt The instance to compare with.
* @return static
*/
public function max(ChronosInterface $dt = null);
/**
* Determines if the instance is a weekday
*
* @return bool
*/
public function isWeekday();
/**
* Determines if the instance is a weekend day
*
* @return bool
*/
public function isWeekend();
/**
* Determines if the instance is yesterday
*
* @return bool
*/
public function isYesterday();
/**
* Determines if the instance is today
*
* @return bool
*/
public function isToday();
/**
* Determines if the instance is tomorrow
*
* @return bool
*/
public function isTomorrow();
/**
* Determines if the instance is in the future, ie. greater (after) than now
*
* @return bool
*/
public function isFuture();
/**
* Determines if the instance is in the past, ie. less (before) than now
*
* @return bool
*/
public function isPast();
/**
* Determines if the instance is a leap year
*
* @return bool
*/
public function isLeapYear();
/**
* Checks if the passed in date is the same day as the instance current day.
*
* @param \Cake\Chronos\ChronosInterface $dt The instance to check against.
* @return bool
*/
public function isSameDay(ChronosInterface $dt);
/**
* Checks if this day is a Sunday.
*
* @return bool
*/
public function isSunday();
/**
* Checks if this day is a Monday.
*
* @return bool
*/
public function isMonday();
/**
* Checks if this day is a Tuesday.
*
* @return bool
*/
public function isTuesday();
/**
* Checks if this day is a Wednesday.
*
* @return bool
*/
public function isWednesday();
/**
* Checks if this day is a Thursday.
*
* @return bool
*/
public function isThursday();
/**
* Checks if this day is a Friday.
*
* @return bool
*/
public function isFriday();
/**
* Checks if this day is a Saturday.
*
* @return bool
*/
public function isSaturday();
/**
* Returns true if this object represents a date within the current week
*
* @return bool
*/
public function isThisWeek();
/**
* Returns true if this object represents a date within the current month
*
* @return bool
*/
public function isThisMonth();
/**
* Returns true if this object represents a date within the current year
*
* @return bool
*/
public function isThisYear();
/**
* Add years to the instance. Positive $value travel forward while
* negative $value travel into the past.
*
* @param int $value The number of years to add.
* @return static
*/
public function addYears($value);
/**
* Add a year to the instance
*
* @param int $value The number of years to add.
* @return static
*/
public function addYear($value = 1);
/**
* Remove a year from the instance
*
* @param int $value The number of years to remove.
* @return static
*/
public function subYear($value = 1);
/**
* Remove years from the instance.
*
* @param int $value The number of years to remove.
* @return static
*/
public function subYears($value);
/**
* Add months to the instance. Positive $value travels forward while
* negative $value travels into the past.
*
* When adding or subtracting months, if the resulting time is a date
* that does not exist, the result of this operation will always be the
* last day of the intended month.
*
* ### Example:
*
* ```
* (new Chronos('2015-01-03'))->addMonths(1); // Results in 2015-02-03
*
* (new Chronos('2015-01-31'))->addMonths(1); // Results in 2015-02-28
* ```
*
* @param int $value The number of months to add.
* @return static
*/
public function addMonths($value);
/**
* Add a month to the instance
*
* When adding or subtracting months, if the resulting time is a date
* that does not exist, the result of this operation will always be the
* last day of the intended month.
*
* ### Example:
*
* ```
* (new Chronos('2015-01-03'))->addMonth(); // Results in 2015-02-03
*
* (new Chronos('2015-01-31'))->addMonth(); // Results in 2015-02-28
* ```
*
* @param int $value The number of months to add.
* @return static
*/
public function addMonth($value = 1);
/**
* Remove a month from the instance
*
* When adding or subtracting months, if the resulting time is a date
* that does not exist, the result of this operation will always be the
* last day of the intended month.
*
* ### Example:
*
* ```
* (new Chronos('2015-03-01'))->subMonth(); // Results in 2015-02-01
*
* (new Chronos('2015-03-31'))->subMonth(); // Results in 2015-02-28
* ```
*
* @param int $value The number of months to remove.
* @return static
*/
public function subMonth($value = 1);
/**
* Remove months from the instance
*
* When adding or subtracting months, if the resulting time is a date
* that does not exist, the result of this operation will always be the
* last day of the intended month.
*
* ### Example:
*
* ```
* (new Chronos('2015-03-01'))->subMonths(1); // Results in 2015-02-01
*
* (new Chronos('2015-03-31'))->subMonths(1); // Results in 2015-02-28
* ```
*
* @param int $value The number of months to remove.
* @return static
*/
public function subMonths($value);
/**
* Add months with overflowing to the instance. Positive $value
* travels forward while negative $value travels into the past.
*
* @param int $value The number of months to add.
* @return static
*/
public function addMonthsWithOverflow($value);
/**
* Add a month with overflow to the instance
*
* @param int $value The number of months to add.
* @return static
*/
public function addMonthWithOverflow($value = 1);
/**
* Remove a month with overflow from the instance
*
* @param int $value The number of months to remove.
* @return static
*/
public function subMonthWithOverflow($value = 1);
/**
* Remove months with overflow from the instance
*
* @param int $value The number of months to remove.
* @return static
*/
public function subMonthsWithOverflow($value);
/**
* Add days to the instance. Positive $value travels forward while
* negative $value travels into the past.
*
* @param int $value The number of days to add.
* @return static
*/
public function addDays($value);
/**
* Add a day to the instance
*
* @param int $value The number of days to add.
* @return static
*/
public function addDay($value = 1);
/**
* Remove a day from the instance
*
* @param int $value The number of days to remove.
* @return static
*/
public function subDay($value = 1);
/**
* Remove days from the instance
*
* @param int $value The number of days to remove.
* @return static
*/
public function subDays($value);
/**
* Add weekdays to the instance. Positive $value travels forward while
* negative $value travels into the past.
*
* @param int $value The number of weekdays to add.
* @return static
*/
public function addWeekdays($value);
/**
* Add a weekday to the instance
*
* @param int $value The number of weekdays to add.
* @return static
*/
public function addWeekday($value = 1);
/**
* Remove a weekday from the instance
*
* @param int $value The number of weekdays to remove.
* @return static
*/
public function subWeekday($value = 1);
/**
* Remove weekdays from the instance
*
* @param int $value The number of weekdays to remove.
* @return static
*/
public function subWeekdays($value);
/**
* Add weeks to the instance. Positive $value travels forward while
* negative $value travels into the past.
*
* @param int $value The number of weeks to add.
* @return static
*/
public function addWeeks($value);
/**
* Add a week to the instance
*
* @param int $value The number of weeks to add.
* @return static
*/
public function addWeek($value = 1);
/**
* Remove a week from the instance
*
* @param int $value The number of weeks to remove.
* @return static
*/
public function subWeek($value = 1);
/**
* Remove weeks to the instance
*
* @param int $value The number of weeks to remove.
* @return static
*/
public function subWeeks($value);
/**
* Add hours to the instance. Positive $value travels forward while
* negative $value travels into the past.
*
* @param int $value The number of hours to add.
* @return static
*/
public function addHours($value);
/**
* Add an hour to the instance
*
* @param int $value The number of hours to add.
* @return static
*/
public function addHour($value = 1);
/**
* Remove an hour from the instance
*
* @param int $value The number of hours to remove.
* @return static
*/
public function subHour($value = 1);
/**
* Remove hours from the instance
*
* @param int $value The number of hours to remove.
* @return static
*/
public function subHours($value);
/**
* Add minutes to the instance. Positive $value travels forward while
* negative $value travels into the past.
*
* @param int $value The number of minutes to add.
* @return static
*/
public function addMinutes($value);
/**
* Add a minute to the instance
*
* @param int $value The number of minutes to add.
* @return static
*/
public function addMinute($value = 1);
/**
* Remove a minute from the instance
*
* @param int $value The number of minutes to remove.
* @return static
*/
public function subMinute($value = 1);
/**
* Remove minutes from the instance
*
* @param int $value The number of minutes to remove.
* @return static
*/
public function subMinutes($value);
/**
* Add seconds to the instance. Positive $value travels forward while
* negative $value travels into the past.
*
* @param int $value The number of seconds to add.
* @return static
*/
public function addSeconds($value);
/**
* Add a second to the instance
*
* @param int $value The number of seconds to add.
* @return static
*/
public function addSecond($value = 1);
/**
* Remove a second from the instance
*
* @param int $value The number of seconds to remove.
* @return static
*/
public function subSecond($value = 1);
/**
* Remove seconds from the instance
*
* @param int $value The number of seconds to remove.
* @return static
*/
public function subSeconds($value);
/**
* 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
*
* @param \Cake\Chronos\ChronosInterface|null $other The datetime to compare with.
* @param bool $absolute Removes time difference modifiers ago, after, etc
* @return string
*/
public function diffForHumans(ChronosInterface $other = null, $absolute = false);
/**
* Get the difference in years
*
* @param \Cake\Chronos\ChronosInterface|null $dt The instance to difference from.
* @param bool $abs Get the absolute of the difference
* @return int
*/
public function diffInYears(ChronosInterface $dt = null, $abs = true);
/**
* Get the difference in months
*
* @param \Cake\Chronos\ChronosInterface|null $dt The instance to difference from.
* @param bool $abs Get the absolute of the difference
* @return int
*/
public function diffInMonths(ChronosInterface $dt = null, $abs = true);
/**
* Get the difference in weeks
*
* @param \Cake\Chronos\ChronosInterface|null $dt The instance to difference from.
* @param bool $abs Get the absolute of the difference
* @return int
*/
public function diffInWeeks(ChronosInterface $dt = null, $abs = true);
/**
* Get the difference in days
*
* @param \Cake\Chronos\ChronosInterface|null $dt The instance to difference from.
* @param bool $abs Get the absolute of the difference
* @return int
*/
public function diffInDays(ChronosInterface $dt = null, $abs = true);
/**
* Get the difference in days using a filter callable
*
* @param callable $callback The callback to use for filtering.
* @param \Cake\Chronos\ChronosInterface|null $dt The instance to difference from.
* @param bool $abs Get the absolute of the difference
* @return int
*/
public function diffInDaysFiltered(callable $callback, ChronosInterface $dt = null, $abs = true);
/**
* Get the difference in hours using a filter callable
*
* @param callable $callback The callback to use for filtering.
* @param \Cake\Chronos\ChronosInterface|null $dt The instance to difference from.
* @param bool $abs Get the absolute of the difference
* @return int
*/
public function diffInHoursFiltered(callable $callback, ChronosInterface $dt = null, $abs = true);
/**
* Get the difference by the given interval using a filter callable
*
* @param \Cake\Chronos\ChronosInterval $ci An interval to traverse by
* @param callable $callback The callback to use for filtering.
* @param \Cake\Chronos\ChronosInterface|null $dt The instance to difference from.
* @param bool $abs Get the absolute of the difference
* @return int
*/
public function diffFiltered(ChronosInterval $ci, callable $callback, ChronosInterface $dt = null, $abs = true);
/**
* Get the difference in weekdays
*
* @param \Cake\Chronos\ChronosInterface|null $dt The instance to difference from.
* @param bool $abs Get the absolute of the difference
* @return int
*/
public function diffInWeekdays(ChronosInterface $dt = null, $abs = true);
/**
* Get the difference in weekend days using a filter
*
* @param \Cake\Chronos\ChronosInterface|null $dt The instance to difference from.
* @param bool $abs Get the absolute of the difference
* @return int
*/
public function diffInWeekendDays(ChronosInterface $dt = null, $abs = true);
/**
* Get the difference in hours
*
* @param \Cake\Chronos\ChronosInterface|null $dt The instance to difference from.
* @param bool $abs Get the absolute of the difference
* @return int
*/
public function diffInHours(ChronosInterface $dt = null, $abs = true);
/**
* Get the difference in minutes
*
* @param \Cake\Chronos\ChronosInterface|null $dt The instance to difference from.
* @param bool $abs Get the absolute of the difference
* @return int
*/
public function diffInMinutes(ChronosInterface $dt = null, $abs = true);
/**
* Get the difference in seconds
*
* @param \Cake\Chronos\ChronosInterface|null $dt The instance to difference from.
* @param bool $abs Get the absolute of the difference
* @return int
*/
public function diffInSeconds(ChronosInterface $dt = null, $abs = true);
/**
* The number of seconds since midnight.
*
* @return int
*/
public function secondsSinceMidnight();
/**
* The number of seconds until 23:59:59.
*
* @return int
*/
public function secondsUntilEndOfDay();
/**
* Resets the time to 00:00:00
*
* @return static
*/
public function startOfDay();
/**
* Resets the time to 23:59:59
*
* @return static
*/
public function endOfDay();
/**
* Resets the date to the first day of the month and the time to 00:00:00
*
* @return static
*/
public function startOfMonth();
/**
* Resets the date to end of the month and time to 23:59:59
*
* @return static
*/
public function endOfMonth();
/**
* Resets the date to the first day of the year and the time to 00:00:00
*
* @return static
*/
public function startOfYear();
/**
* Resets the date to end of the year and time to 23:59:59
*
* @return static
*/
public function endOfYear();
/**
* Resets the date to the first day of the decade and the time to 00:00:00
*
* @return static
*/
public function startOfDecade();
/**
* Resets the date to end of the decade and time to 23:59:59
*
* @return static
*/
public function endOfDecade();
/**
* Resets the date to the first day of the century and the time to 00:00:00
*
* @return static
*/
public function startOfCentury();
/**
* Resets the date to end of the century and time to 23:59:59
*
* @return static
*/
public function endOfCentury();
/**
* Resets the date to the first day of week (defined in $weekStartsAt) and the time to 00:00:00
*
* @return static
*/
public function startOfWeek();
/**
* Resets the date to end of week (defined in $weekEndsAt) and time to 23:59:59
*
* @return static
*/
public function endOfWeek();
/**
* 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.
*
* @param int $dayOfWeek The day of the week to move to.
* @return mixed
*/
public function next($dayOfWeek = null);
/**
* 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.
*
* @param int $dayOfWeek The day of the week to move to.
* @return mixed
*/
public function previous($dayOfWeek = null);
/**
* 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.
*
* @param int $dayOfWeek The day of the week to move to.
* @return mixed
*/
public function firstOfMonth($dayOfWeek = null);
/**
* 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.
*
* @param int $dayOfWeek The day of the week to move to.
* @return mixed
*/
public function lastOfMonth($dayOfWeek = null);
/**
* 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.
*
* @param int $nth The offset to use.
* @param int $dayOfWeek The day of the week to move to.
* @return mixed
*/
public function nthOfMonth($nth, $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.
*
* @param int $dayOfWeek The day of the week to move to.
* @return mixed
*/
public function firstOfQuarter($dayOfWeek = null);
/**
* 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.
*
* @param int $dayOfWeek The day of the week to move to.
* @return mixed
*/
public function lastOfQuarter($dayOfWeek = null);
/**
* 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.
*
* @param int $nth The offset to use.
* @param int $dayOfWeek The day of the week to move to.
* @return mixed
*/
public function nthOfQuarter($nth, $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.
*
* @param int $dayOfWeek The day of the week to move to.
* @return mixed
*/
public function firstOfYear($dayOfWeek = null);
/**
* 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.
*
* @param int $dayOfWeek The day of the week to move to.
* @return mixed
*/
public function lastOfYear($dayOfWeek = null);
/**
* 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.
*
* @param int $nth The offset to use.
* @param int $dayOfWeek The day of the week to move to.
* @return mixed
*/
public function nthOfYear($nth, $dayOfWeek);
/**
* Modify the current instance to the average of a given instance (default now) and the current instance.
*
* @param \Cake\Chronos\ChronosInterface $dt The instance to compare with.
* @return static
*/
public function average(ChronosInterface $dt = null);
/**
* Check if its the birthday. Compares the date/month values of the two dates.
*
* @param \Cake\Chronos\ChronosInterface $dt The instance to compare with.
* @return bool
*/
public function isBirthday(ChronosInterface $dt);
/**
* Returns true this instance happened within the specified interval
*
* @param string|int $timeInterval the numeric value with space then time type.
* Example of valid types: 6 hours, 2 days, 1 minute.
* @return bool
*/
public function wasWithinLast($timeInterval);
/**
* Returns true this instance will happen within the specified interval
*
* @param string|int $timeInterval the numeric value with space then time type.
* Example of valid types: 6 hours, 2 days, 1 minute.
* @return bool
*/
public function isWithinNext($timeInterval);
/**
* Check if instance of ChronosInterface is mutable.
*
* @return bool
*/
public function isMutable();
}