Praca z datami w PHP to jedna z tych rzeczy, którymi albo dobrze sobie radzisz, pracujesz nad zrozumieniem, albo utknąłeś w króliczej dziurze dokumentacji zawartej w podręczniku.
Jeśli jednak pracujesz z WordPressem, szansa, że będziesz musiał pracować z datami, jest dość wysoka. Niemal ze wszystkim, co publikujemy, jest powiązana przynajmniej jedna data.
Obejmuje to posty, strony, niestandardowe typy postów, poprawki, wersje robocze i tak dalej.
Co więcej, istnieje szansa, że niestandardowa praca, z którą musisz się rozwijać, wymaga znalezienia różnicy w dwóch datach przy użyciu PHP. I chociaż istnieje wiele sposobów na zrobienie tego, istnieje proces, który śledzę po coś.
Różnica w datach przy użyciu PHP
Zanim przejdę przez mój przykład, warto podać trochę kontekstu. W końcu to, nad czym pracujesz, prawdopodobnie będzie trochę inne niż to, co robię.
Ogólna idea może nadal być taka sama, więc sedno tego, co robisz, można nadal ekstrapolować z poniższego kodu. Ale podam konkretny przykład z mojej własnej pracy:
- Mam niestandardowy typ wpisu reprezentujący wydarzenie i wydarzenie jako datę publikacji.
- Muszę wiedzieć, kiedy zaczyna się impreza. Aby to zrobić, definiuję format daty przy użyciu formatu n/j/Y, który jest obsługiwany przez PHP, a następnie konwertuję go na datę za pomocą funkcji daty w PHP .
- Następnie biorę dzisiejszą datę (jako łatwy sposób na określenie różnicy w datach przy użyciu PHP w tym przykładzie) i konwertuję ją na datę przy użyciu tej samej funkcji i formatu n/j/Y.
- Następnie tworzę wystąpienie dwóch obiektów DateTime i obliczam różnicę.
Jeśli to nie jest proste, polecam kliknąć powyższe linki. W przeciwnym razie oto kod.
<?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;
}
Zauważ, że w powyższym kodzie interesuje mnie tylko pobranie różnicy w latach. Możesz wybrać coś innego. Jeśli tak jest, API oferowane przez PHP ułatwia to, badając właściwości obiektu DateTime.
Ale biorąc pod uwagę dwie daty, jest to prosty sposób na znalezienie różnicy w datach przy użyciu PHP w kontekście WordPressa.
