get_weekstartend()WP 0.71

Get the week start and end from the datetime or date string from MySQL.

1 time — 0.000049 sec (very fast) | 50000 times — 0.33 sec (very fast) | PHP 7.1.2RC1, WP 4.7.3

No Hooks.

Return

Int[]. Week start and end dates as Unix timestamps.

Usage

get_weekstartend( $mysqlstring, $start_of_week );
$mysqlstring(string) (required)
Date or datetime field type from MySQL.
$start_of_week(int|string)
Start of the week as an integer.
Default: empty string

Examples

0

#1 Get the start and end time of a week

Demonstration of the function works.

Let pass into the function the date 3 March 2017 which has a week starting with 27 Feb and ending with 5 March:

$arr = get_weekstartend( '2017-03-03' );

As a result, $arr will contain the following array

Array(
	[start] => 1488153600 // 2017-02-27 00:00:00 - Monday
	[end] => 1488758399 // 2017-03-05 23:59:59 - Sunday
)

Changelog

Since 0.71 Introduced.

get_weekstartend() code WP 6.4.1

function get_weekstartend( $mysqlstring, $start_of_week = '' ) {
	// MySQL string year.
	$my = substr( $mysqlstring, 0, 4 );

	// MySQL string month.
	$mm = substr( $mysqlstring, 8, 2 );

	// MySQL string day.
	$md = substr( $mysqlstring, 5, 2 );

	// The timestamp for MySQL string day.
	$day = mktime( 0, 0, 0, $md, $mm, $my );

	// The day of the week from the timestamp.
	$weekday = gmdate( 'w', $day );

	if ( ! is_numeric( $start_of_week ) ) {
		$start_of_week = get_option( 'start_of_week' );
	}

	if ( $weekday < $start_of_week ) {
		$weekday += 7;
	}

	// The most recent week start day on or before $day.
	$start = $day - DAY_IN_SECONDS * ( $weekday - $start_of_week );

	// $start + 1 week - 1 second.
	$end = $start + WEEK_IN_SECONDS - 1;
	return compact( 'start', 'end' );
}