Получение начала и конца недели в WordPress через функцию GET_WEEKSTARTEND()

Функция GET_WEEKSTARTEND() │ WordPress 0.71

Функция GET_WEEKSTARTEND() позволяет получить даты начала и конца недели на основе строки даты или времени из MySQL.

Производительность

  • 1 вызов — 0.000049 сек (очень быстро)
  • 50000 вызовов — 0.33 сек (очень быстро)
  • Поддерживаемая версия PHP: 7.1.2RC1, WordPress 4.7.3

Возвращаемое значение

Функция возвращает массив с датами начала и конца недели в виде временных меток Unix.

Использование функции

get_weekstartend( $mysqlstring, $start_of_week );

Параметры

  • $mysqlstring (строка) (обязательный): Дата или поле времени из MySQL.
  • $start_of_week (целое число или строка): День начала недели в виде целого числа.
    • По умолчанию: пустая строка.

Примеры

Пример 1: Получение времени начала и конца недели

Давайте передадим в функцию дату 3 марта 2017, которая начинается с 27 февраля и заканчивается 5 марта:

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

В результате переменная $arr будет содержать следующий массив:

Array(
    [start] => 1488153600, // 2017-02-27 00:00:00 - Понедельник
    [end] => 1488758399    // 2017-03-05 23:59:59 - Воскресенье
)

Изменения

Функция была введена в версии 0.71.

Код функции GET_WEEKSTARTEND()

function get_weekstartend( $mysqlstring, $start_of_week = '' ) {
    // Год из строки MySQL.
    $my = substr( $mysqlstring, 0, 4 );

    // Месяц из строки MySQL.
    $mm = substr( $mysqlstring, 5, 2 );

    // День из строки MySQL.
    $md = substr( $mysqlstring, 8, 2 );

    // Временная метка для дня.
    $day = mktime( 0, 0, 0, $md, $mm, $my );

    // Получаем день недели по временной метке.
    $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;
    }

    // Самый близкий день начала недели к $day.
    $start = $day - DAY_IN_SECONDS * ( $weekday - $start_of_week );

    // Конец недели: $start + 1 неделя - 1 секунда.
    $end = $start + WEEK_IN_SECONDS - 1;
    return compact( 'start', 'end' );
}

Связанные функции

Подобные функции для работы с датами и временем в WordPress:

  • comment_date()
  • comment_time()
  • current_time()
  • date_i18n()
  • get_comment_date()
  • get_comment_time()
  • get_date_from_gmt()
  • get_gmt_from_date()
  • get_lastpostdate()
  • get_lastpostmodified()
  • get_post_time()
  • get_post_timestamp()
  • get_the_date()
  • get_the_modified_date()
  • get_the_modified_time()
  • get_the_time()
  • mysql2date()
  • the_date()
  • the_time()
  • wp_checkdate()
  • wp_date()
  • wp_maybe_decline_date()
  • wp_timezone()
  • wp_timezone_choice()
  • wp_timezone_string()

Эта информация поможет вам лучше понимать, как использовать функцию GET_WEEKSTARTEND() и работать с датами в WordPress.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *