Работа с датами в PHP — это одна из тех вещей, с которыми вы либо хорошо разбираетесь, либо работаете над пониманием, либо застряли в кроличьей норе документации, которая есть в руководстве.
Однако, если вы работаете с WordPress, вероятность того, что вам понадобится работать с датами, довольно высока. Почти все, что мы публикуем, связано хотя бы с одной датой.
Сюда входят сообщения, страницы, настраиваемые типы сообщений, редакции, черновики и так далее.
Кроме того, есть вероятность, что для пользовательской работы, которую вам нужно разработать, потребуется найти разницу в двух датах с помощью PHP. И хотя есть несколько способов сделать это, есть процесс, которому я следил за чем-то.
Разница в датах с использованием PHP
Прежде чем я перейду к моему примеру, полезно дать немного контекста. В конце концов, то, над чем вы работаете, скорее всего, будет немного отличаться от того, что делаю я.
Общая идея может остаться прежней, поэтому суть того, что вы делаете, все еще можно экстраполировать из приведенного ниже кода. Но позвольте мне привести конкретный пример из моей собственной работы:
- У меня есть настраиваемый тип сообщения, представляющий событие и событие как дату публикации.
- Мне нужно знать, когда начнется мероприятие. Для этого я определяю формат даты, используя формат n/j/Y, поддерживаемый PHP, а затем преобразую его в дату, используя функцию даты PHP .
- Затем я беру сегодняшнюю дату (как простой способ определить разницу в датах с помощью PHP для этого примера) и преобразовываю ее в дату, используя ту же функцию и формат n/j/Y.
- После этого я создаю два объекта DateTime и вычисляю разницу.
Если это не так просто, я рекомендую нажать на приведенные выше ссылки. В противном случае, вот код.
<?php
/**
* Determines the number of years that exist between the specified
* event custom post type and today's date.
*
* @access private
* @param WP_Post $event A custom post type representing an event.
* @return string $years The difference in years.
*/
private function get_difference_in_dates( $event) {
// If the post_date is empty, why are we here?
if (empty( $event['post_date']) {
return;
}
// Get the date for the start of the event and te
$start = date( 'n/j/Y', strtotime( $event['post_date']) );
$today = date( 'n/j/Y' );
// Get the date for the start of the event and today's date.
$start = new DateTime( $start );
$end = new DateTime( $today );
// Now find the difference in years.
$difference = $start->diff( $end );
$years = $difference->y;
// If the difference is less than one, we'll return a string of "< 1".
$years = (1 > $years )? '< 1': (string)$years;
return $years;
}
Обратите внимание, что в приведенном выше коде меня интересует только разница в годах. Вы можете выбрать что-то другое. Если это так, API, предлагаемый PHP, упрощает это, изучая свойства объекта DateTime.
Но учитывая две даты, это простой способ найти разницу в датах с помощью PHP в контексте WordPress.
