WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Платформа для конвертации и монетизации трафика
функция не описана

Automattic\WooCommerce\Admin\API\Reports

DataStore::update_interval_boundary_dates() protected WC 1.0

Updates start and end dates for intervals so that they represent intervals' borders, not times when data in db were recorded.

E.g. if there are db records for only Tuesday and Thursday this week, the actual week interval is [Mon, Sun], not [Tue, Thu].

{} Это метод класса: DataStore{}

Хуков нет.

Возвращает

Null. Ничего.

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

// protected - в коде основоного (родительского) или дочернего класса
$result = $this->update_interval_boundary_dates( $start_datetime, $end_datetime, $time_interval, $intervals );
$start_datetime(DateTime) (обязательный)
Start date.
$end_datetime(DateTime) (обязательный)
End date.
$time_interval(строка) (обязательный)
Time interval, e.g. day, week, month.
$intervals(массив) (обязательный) (передается по ссылке — &)
Array of intervals extracted from SQL db.

Код DataStore::update_interval_boundary_dates() WC 4.7.1

<?php
protected function update_interval_boundary_dates( $start_datetime, $end_datetime, $time_interval, &$intervals ) {
	$local_tz = new \DateTimeZone( wc_timezone_string() );
	foreach ( $intervals as $key => $interval ) {
		$datetime = new \DateTime( $interval['datetime_anchor'], $local_tz );

		$prev_start = TimeInterval::iterate( $datetime, $time_interval, true );
		// @todo Not sure if the +1/-1 here are correct, especially as they are applied before the ?: below.
		$prev_start_timestamp = (int) $prev_start->format( 'U' ) + 1;
		$prev_start->setTimestamp( $prev_start_timestamp );
		if ( $start_datetime ) {
			$date_start                      = $prev_start < $start_datetime ? $start_datetime : $prev_start;
			$intervals[ $key ]['date_start'] = $date_start->format( 'Y-m-d H:i:s' );
		} else {
			$intervals[ $key ]['date_start'] = $prev_start->format( 'Y-m-d H:i:s' );
		}

		$next_end           = TimeInterval::iterate( $datetime, $time_interval );
		$next_end_timestamp = (int) $next_end->format( 'U' ) - 1;
		$next_end->setTimestamp( $next_end_timestamp );
		if ( $end_datetime ) {
			$date_end                      = $next_end > $end_datetime ? $end_datetime : $next_end;
			$intervals[ $key ]['date_end'] = $date_end->format( 'Y-m-d H:i:s' );
		} else {
			$intervals[ $key ]['date_end'] = $next_end->format( 'Y-m-d H:i:s' );
		}

		$intervals[ $key ]['interval'] = $time_interval;
	}
}