PHP-s kuupäevadega töötamine on üks neist asjadest, millega te kas oskate hästi, töötate selle mõistmise nimel või olete juhendis sisalduva dokumentatsiooni jäneseauku kinni jäänud.
Kui aga töötate WordPressiga, on tõenäosus, et peate kuupäevadega töötama, üsna suur. Peaaegu kõigel, mida avaldame, on seotud vähemalt üks kuupäev.
See hõlmab postitusi, lehti, kohandatud postituste tüüpe, muudatusi, mustandeid ja nii edasi.
Lisaks on tõenäoline, et kohandatud töö, mida peate arendama, eeldab, et leiate PHP abil erinevuse kahe kuupäeva vahel. Ja kuigi selleks on mitu võimalust, olen siiski järginud protsessi.
PHP-i kasutavate kuupäevade erinevus
Enne kui ma oma näite läbi lähen, aitab see veidi konteksti anda. Lõppude lõpuks on see, mille kallal te töötate, tõenäoliselt veidi erinev sellest, mida mina teen.
Üldine idee võib siiski olla sama, nii et teie tegevuse põhiolemust saab siiski allolevast koodist ekstrapoleerida. Aga toon ühe konkreetse näite enda tööst:
- Mul on kohandatud postituse tüüp, mis tähistab sündmust ja sündmust postituskuupäevana.
- Ma pean teadma, millal üritus algab. Selleks defineerin kuupäevavormingu, kasutades n/j/Y-vormingut, mida toetab PHP, ja teisendan selle kuupäevaks PHP kuupäevafunktsiooni abil.
- Järgmiseks võtan tänase kuupäeva (lihtsa viisina selle näite puhul PHP abil kuupäevade erinevuse määramiseks) ja teisendan selle kuupäevaks, kasutades sama funktsiooni ja n/j/Y vormingut.
- Pärast seda loon kaks DateTime objekti ja arvutan erinevuse.
Kui see pole lihtne, soovitan klõpsata ülaltoodud linkidel. Muidu on kood siin.
<?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;
}
Märkus ülaltoodud koodis, et olen huvitatud ainult aastate erinevuse leidmisest. Võite valida midagi muud. Kui see nii on, teeb PHP pakutav API seda hõlpsaks, uurides DateTime objekti atribuute .
Kuid arvestades kahte kuupäeva, on see lihtne viis kuupäevade erinevuse leidmiseks PHP-ga WordPressi kontekstis.
