leenooks/src/Carbon.php
2018-04-23 17:45:21 +10:00

57 lines
1.5 KiB
PHP

<?php
namespace Leenooks;
use Carbon\Carbon as CarbonBase;
/**
* This overrides the default Carbon\Carbon class so that we can enable
* additional Date functions, like Half Years
*/
class Carbon extends CarbonBase
{
const MONTHS_PER_HALF = 6;
public function __get($name)
{
switch (true) {
case $name === 'half':
return (int) ceil($this->month / static::MONTHS_PER_HALF);
default:
return parent::__get($name);
}
}
/**
* 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 constants
* to indicate the desired dayOfWeek, ex. static::MONDAY.
*
* @param int|null $dayOfWeek
*
* @return static
*/
public function firstOfHalf($dayOfWeek = null)
{
return $this->setDate($this->year, $this->half * static::MONTHS_PER_HALF - 5, 1)->firstOfMonth($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 constants
* to indicate the desired dayOfWeek, ex. static::MONDAY.
*
* @param int|null $dayOfWeek
*
* @return static
*/
public function lastOfHalf($dayOfWeek = null)
{
return $this->setDate($this->year, $this->half * static::MONTHS_PER_HALF, 1)->lastOfMonth($dayOfWeek);
}
}