Encontre a diferença de datas usando PHP (e WordPress)
Trabalhar com datas em PHP é uma daquelas coisas que você tem um bom controle, você está trabalhando para entender, ou você está preso na toca do coelho da documentação que está no manual.
Se você estiver trabalhando com o WordPress, no entanto, a chance de precisar trabalhar com datas é bastante alta. Quase tudo que publicamos tem pelo menos uma data associada.
Isso inclui postagem, páginas, tipos de postagem personalizados, revisões, rascunhos e assim por diante.
Além disso, há uma chance de que o trabalho personalizado com o qual você precisa desenvolver exija que você encontre a diferença em duas datas usando PHP. E embora existam várias maneiras de fazer isso, há um processo que tenho seguido para alguma coisa.
A diferença de datas usando PHP
Antes de passar pelo meu exemplo, ajudará a contextualizar um pouco. Afinal, o que quer que você esteja trabalhando provavelmente será um pouco diferente do que estou fazendo.
A ideia geral ainda pode ser a mesma, então a essência do que você está fazendo ainda pode ser extrapolada do código abaixo. Mas deixe-me dar um exemplo concreto do meu próprio trabalho:
- Eu tenho um tipo de postagem personalizado representando um evento e o evento como uma data de postagem.
- Preciso saber quando o evento começa. Para fazer isso, defino o formato de data usando o formato n/j/Y como suportado pelo PHP e, em seguida, converto isso em uma data usando a função de data do PHP .
- Em seguida, tomo a data de hoje (como uma maneira fácil de determinar a diferença de datas usando PHP para este exemplo) e a converto em uma data usando a mesma função e formato n/j/Y.
- Depois disso, instancia dois objetos DateTime e calculo a diferença.
Se isso não for simples, eu recomendo clicar nos links acima. Caso contrário, aqui está o código.
<?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;
}
Observe no código acima que estou interessado apenas em recuperar a diferença em anos. Você pode optar por escolher algo diferente. Se for esse o caso, a API oferecida pelo PHP facilita isso examinando as propriedades do objeto DateTime.
Mas dadas duas datas, esta é uma maneira direta de encontrar a diferença de datas usando PHP no contexto do WordPress.
