{"id":228595,"date":"2022-10-27T20:01:00","date_gmt":"2022-10-27T17:01:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228595"},"modified":"2022-11-09T03:10:48","modified_gmt":"2022-11-09T00:10:48","slug":"znajdz-roznice-w-datach-za-pomoca-php-i-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/znajdz-roznice-w-datach-za-pomoca-php-i-wordpress\/","title":{"rendered":"Znajd\u017a r\u00f3\u017cnic\u0119 w datach za pomoc\u0105 PHP (i WordPress)"},"content":{"rendered":"\n<p>Praca z datami w PHP to jedna z tych rzeczy, kt\u00f3rymi albo dobrze sobie radzisz, pracujesz nad zrozumieniem, albo utkn\u0105\u0142e\u015b w kr\u00f3liczej dziurze dokumentacji zawartej w podr\u0119czniku.<\/p>\n<p>Je\u015bli jednak pracujesz z WordPressem, szansa, \u017ce \u200b\u200bb\u0119dziesz musia\u0142 pracowa\u0107 z datami, jest do\u015b\u0107 wysoka. Niemal ze wszystkim, co publikujemy, jest powi\u0105zana przynajmniej jedna data.<\/p>\n<p>Obejmuje to posty, strony, niestandardowe typy post\u00f3w, poprawki, wersje robocze i tak dalej.<\/p>\n<p>Co wi\u0119cej, istnieje szansa, \u017ce \u200b\u200bniestandardowa praca, z kt\u00f3r\u0105 musisz si\u0119 rozwija\u0107, wymaga znalezienia r\u00f3\u017cnicy w dw\u00f3ch datach przy u\u017cyciu PHP. I chocia\u017c istnieje wiele sposob\u00f3w na zrobienie tego, istnieje proces, kt\u00f3ry \u015bledz\u0119 po co\u015b.<\/p>\n<h2>R\u00f3\u017cnica w datach przy u\u017cyciu PHP<\/h2>\n<p>Zanim przejd\u0119 przez m\u00f3j przyk\u0142ad, warto poda\u0107 troch\u0119 kontekstu. W ko\u0144cu to, nad czym pracujesz, prawdopodobnie b\u0119dzie troch\u0119 inne ni\u017c to, co robi\u0119.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-167514-61e7a4d3a7ab3.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-167514-61e7a4d3a7ab3.png\" alt=\"Znajd\u017a r\u00f3\u017cnic\u0119 w datach za pomoc\u0105 PHP (i WordPress)\" ><\/a><\/p>\n<p>Og\u00f3lna idea mo\u017ce nadal by\u0107 taka sama, wi\u0119c sedno tego, co robisz, mo\u017cna nadal ekstrapolowa\u0107 z poni\u017cszego kodu. Ale podam konkretny przyk\u0142ad z mojej w\u0142asnej pracy:<\/p>\n<ol>\n<li>Mam niestandardowy typ wpisu reprezentuj\u0105cy wydarzenie i wydarzenie jako dat\u0119 publikacji.<\/li>\n<li>Musz\u0119 wiedzie\u0107, kiedy zaczyna si\u0119 impreza. Aby to zrobi\u0107, definiuj\u0119 format daty przy u\u017cyciu formatu n\/j\/Y, kt\u00f3ry jest obs\u0142ugiwany przez PHP, a nast\u0119pnie konwertuj\u0119 go na dat\u0119 za pomoc\u0105 funkcji <a href=\"https:\/\/php.net\/manual\/en\/function.date.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">daty<\/a> w PHP .<\/li>\n<li>Nast\u0119pnie bior\u0119 dzisiejsz\u0105 dat\u0119 (jako \u0142atwy spos\u00f3b na okre\u015blenie r\u00f3\u017cnicy w datach przy u\u017cyciu PHP w tym przyk\u0142adzie) i konwertuj\u0119 j\u0105 na dat\u0119 przy u\u017cyciu tej samej funkcji i formatu n\/j\/Y.<\/li>\n<li>Nast\u0119pnie tworz\u0119 wyst\u0105pienie dw\u00f3ch obiekt\u00f3w <a href=\"https:\/\/php.net\/manual\/en\/class.datetime.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">DateTime<\/a> i obliczam r\u00f3\u017cnic\u0119.<\/li>\n<\/ol>\n<p>Je\u015bli to nie jest proste, polecam klikn\u0105\u0107 powy\u017csze linki. W przeciwnym razie <a href=\"https:\/\/gist.github.com\/tommcfarlin\/d72e8d0e5d66d5e905f771254c3ad566\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">oto kod<\/a>.<\/p>\n<pre><code>&lt;?php\n\n\/**\n * Determines the number of years that exist between the specified\n * event custom post type and today's date.\n *\n * @access private\n * @param  WP_Post $event A custom post type representing an event.\n * @return string  $years The difference in years.\n *\/\nprivate function get_difference_in_dates( $event) {\n\n  \/\/ If the post_date is empty, why are we here?\n  if (empty( $event['post_date']) {\n    return;\n  }\n\n  \/\/ Get the date for the start of the event and te \n  $start = date( 'n\/j\/Y', strtotime( $event['post_date']) );\n  $today = date( 'n\/j\/Y' );\n\n  \/\/ Get the date for the start of the event and today's date.\n  $start      = new DateTime( $start );\n  $end        = new DateTime( $today );\n\n  \/\/ Now find the difference in years.\n  $difference = $start-&gt;diff( $end );\n  $years      = $difference-&gt;y;\n\n  \/\/ If the difference is less than one, we'll return a string of \"&lt; 1\".\n  $years = (1 &gt; $years )? '&lt; 1': (string)$years;\n\n  return $years;\n}<\/code><\/pre>\n<p>Zauwa\u017c, \u017ce w powy\u017cszym kodzie interesuje mnie tylko pobranie r\u00f3\u017cnicy w latach. Mo\u017cesz wybra\u0107 co\u015b innego. Je\u015bli tak jest, API oferowane przez PHP u\u0142atwia to, badaj\u0105c w\u0142a\u015bciwo\u015bci <a href=\"https:\/\/php.net\/manual\/en\/class.datetime.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">obiektu DateTime<\/a>.<\/p>\n<p>Ale bior\u0105c pod uwag\u0119 dwie daty, jest to prosty spos\u00f3b na znalezienie r\u00f3\u017cnicy w datach przy u\u017cyciu PHP w kontek\u015bcie WordPressa.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Istnieje wiele sposob\u00f3w na znalezienie r\u00f3\u017cnicy w datach za pomoc\u0105 PHP. Oto proces, kt\u00f3ry \u015bledz\u0119 od jakiego\u015b czasu.<\/p>\n","protected":false},"author":1,"featured_media":167515,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[721,919,897,805,845,866],"tags":[1169],"class_list":["post-228595","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-inny","category-kod","category-php-7","category-samouczki","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/228595","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=228595"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/228595\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/167515"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=228595"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=228595"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=228595"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}