Automattic\WooCommerce\Admin\API\Reports

TimeInterval::next_quarter_start()public staticWC 1.0

Returns a new DateTime object representing the next quarter start, or previous quarter end if reversed.

Метод класса: TimeInterval{}

Хуков нет.

Возвращает

DateTime.

Использование

$result = TimeInterval::next_quarter_start( $datetime, $reversed );
$datetime(DateTime) (обязательный)
Date and time.
$reversed(true|false)
Going backwards in time instead of forward.
По умолчанию: false

Код TimeInterval::next_quarter_start() WC 8.7.0

public static function next_quarter_start( $datetime, $reversed = false ) {
	$year  = $datetime->format( 'Y' );
	$month = (int) $datetime->format( 'n' );

	switch ( $month ) {
		case 1:
		case 2:
		case 3:
			if ( $reversed ) {
				$month = 1;
			} else {
				$month = 4;
			}
			break;
		case 4:
		case 5:
		case 6:
			if ( $reversed ) {
				$month = 4;
			} else {
				$month = 7;
			}
			break;
		case 7:
		case 8:
		case 9:
			if ( $reversed ) {
				$month = 7;
			} else {
				$month = 10;
			}
			break;
		case 10:
		case 11:
		case 12:
			if ( $reversed ) {
				$month = 10;
			} else {
				$month = 1;
				$year ++;
			}
			break;
	}
	$datetime = new \DateTime( "$year-$month-01 00:00:00", new \DateTimeZone( wc_timezone_string() ) );
	if ( $reversed ) {
		$timestamp                   = (int) $datetime->format( 'U' );
		$end_of_prev_month_timestamp = $timestamp - 1;
		$datetime->setTimestamp( $end_of_prev_month_timestamp );
	}

	return $datetime;
}