Функция CURRENT_TIME() в WordPress: типы времени, примеры использования

Функция CURRENT_TIME() в WordPress

Функция CURRENT_TIME() позволяет получить текущее время в зависимости от указанного вами типа. Давайте рассмотрим, как она работает и как ее использовать.

Типы времени

  • mysql: возвращает время в формате, подходящем для поля DATETIME в MySQL.
  • timestamp или U: возвращает текущую метку времени (количество секунд, прошедших с 1 января 1970 года), а также корректирует эту метку в зависимости от временной зоны, указанной в настройках WordPress.
  • Другие строковые значения будут интерпретированы как форматы даты PHP (например, 'Y-m-d').

Если параметр $gmt равен true, функция будет использовать время по Гринвичу (GMT). В противном случае время будет скорректировано с учетом смещения временной зоны вашего сайта.

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

  • Время выполнения одного запроса: 0.000011 сек (очень быстро).
  • Время выполнения 50000 запросов: 0.03 сек (почти мгновенно).

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

  • int|string: целое число, если $type равен 'timestamp' или 'U', строка в противном случае.

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

current_time( $type, $gmt );
  • $type (строка, обязательный параметр): тип времени, который нужно получить. Принимает значения 'mysql', 'timestamp', 'U' или формат даты PHP (например, 'Y-m-d').
  • $gmt (int|true|false): необходимо ли использовать временную зону GMT. По умолчанию: false.

Примеры использования

Получите текущее время в формате MySQL

$blogtime = current_time('mysql'); // возвращает, например: 2005-08-05 10:41:13

Разделим полученное время на составляющие:

list( $year, $month, $day, $hour, $minute, $second ) = preg_split( '([^0-9])', $blogtime );

// Теперь у нас есть переменные:
// $year - текущий год
// $month - текущий месяц
// и так далее

Покажите текущее время в разных форматах

echo current_time( 'mysql' );       // Отобразит текущее время в формате SQL
echo current_time( 'mysql', 1 );    // Отобразит время в GMT/UTC
echo current_time( 'timestamp' );    // Вернет текущую метку времени в формате Unix
echo current_time( 'timestamp', 1 ); // Вернет метку времени в GMT/UTC

Рекомендации

Что не рекомендуется делать:

  • Извлекать время с помощью метки времени WP:

    current_time( 'timestamp' );
    get_post_time( 'U' );
  • Не храните метки времени WP на постоянной основе.

  • Не сравнивайте метки времени WP.

Что рекомендуется:

  • Извлекать время как метку времени Unix или объект DateTimeImmutable:

    time();
    current_datetime();
    get_post_datetime();
    get_post_timestamp();
  • Локализовать время на основе метки времени Unix:

    wp_date( DATE_RFC3339, $timestamp );
  • Хранить метки времени Unix или форматы, которые точно указывают момент времени, такие как DATE_RFC3339.

  • Сравнивать метки времени Unix или объекты DateTimeInterface в одной временной зоне.

Важное замечание

С версии 5.3 использование current_time( 'timestamp' ) не рекомендуется, так как это не вернет метку времени Unix (UTC). Вместо этого используйте:

$local_time  = current_datetime();
$current_time = $local_time->getTimestamp() + $local_time->getOffset();

Код функции

Вот пример реализации функции current_time:

function current_time( $type, $gmt = 0 ) {
// Не используйте метку времени не по GMT, если вы не понимаете разницу и это вам действительно нужно.
if ( 'timestamp' === $type || 'U' === $type ) {
return $gmt ? time() : time() + (int) ( (float) get_option( 'gmt_offset' ) * HOUR_IN_SECONDS );
}

if ( 'mysql' === $type ) {
    $type = 'Y-m-d H:i:s';
}

$timezone = $gmt ? new DateTimeZone( 'UTC' ) : wp_timezone();
$datetime = new DateTime( 'now', $timezone );

return $datetime->format( $type );

}

Теперь вы знакомы с функцией CURRENT_TIME() в WordPress! Если у вас есть вопросы, не стесняйтесь задавать их!

Leave a Reply

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