Функция 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! Если у вас есть вопросы, не стесняйтесь задавать их!