{"id":229228,"date":"2022-10-27T19:55:00","date_gmt":"2022-10-27T16:55:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229228"},"modified":"2022-11-09T06:03:39","modified_gmt":"2022-11-09T03:03:39","slug":"encontre-a-diferenca-de-datas-usando-php-e-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/encontre-a-diferenca-de-datas-usando-php-e-wordpress\/","title":{"rendered":"Encontre a diferen\u00e7a de datas usando PHP (e WordPress)"},"content":{"rendered":"<p>Trabalhar com datas em PHP \u00e9 uma daquelas coisas que voc\u00ea tem um bom controle, voc\u00ea est\u00e1 trabalhando para entender, ou voc\u00ea est\u00e1 preso na toca do coelho da documenta\u00e7\u00e3o que est\u00e1 no manual.<\/p>\n<p>Se voc\u00ea estiver trabalhando com o WordPress, no entanto, a chance de precisar trabalhar com datas \u00e9 bastante alta. Quase tudo que publicamos tem pelo menos uma data associada.<\/p>\n<p>Isso inclui postagem, p\u00e1ginas, tipos de postagem personalizados, revis\u00f5es, rascunhos e assim por diante.<\/p>\n<p>Al\u00e9m disso, h\u00e1 uma chance de que o trabalho personalizado com o qual voc\u00ea precisa desenvolver exija que voc\u00ea encontre a diferen\u00e7a em duas datas usando PHP. E embora existam v\u00e1rias maneiras de fazer isso, h\u00e1 um processo que tenho seguido para alguma coisa.<\/p>\n<h2>A diferen\u00e7a de datas usando PHP<\/h2>\n<p>Antes de passar pelo meu exemplo, ajudar\u00e1 a contextualizar um pouco. Afinal, o que quer que voc\u00ea esteja trabalhando provavelmente ser\u00e1 um pouco diferente do que estou fazendo.<\/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=\"Encontre a diferen\u00e7a de datas usando PHP (e WordPress)\" ><\/a><\/p>\n<p>A ideia geral ainda pode ser a mesma, ent\u00e3o a ess\u00eancia do que voc\u00ea est\u00e1 fazendo ainda pode ser extrapolada do c\u00f3digo abaixo. Mas deixe-me dar um exemplo concreto do meu pr\u00f3prio trabalho:<\/p>\n<ol>\n<li>Eu tenho um tipo de postagem personalizado representando um evento e o evento como uma data de postagem.<\/li>\n<li>Preciso saber quando o evento come\u00e7a. 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\u00e7\u00e3o de <a href=\"https:\/\/php.net\/manual\/en\/function.date.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">data<\/a> do PHP .<\/li>\n<li>Em seguida, tomo a data de hoje (como uma maneira f\u00e1cil de determinar a diferen\u00e7a de datas usando PHP para este exemplo) e a converto em uma data usando a mesma fun\u00e7\u00e3o e formato n\/j\/Y.<\/li>\n<li>Depois disso, instancia dois objetos <a href=\"https:\/\/php.net\/manual\/en\/class.datetime.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">DateTime e calculo a diferen\u00e7a.<\/a><\/li>\n<\/ol>\n<p>Se isso n\u00e3o for simples, eu recomendo clicar nos links acima. Caso contr\u00e1rio, <a href=\"https:\/\/gist.github.com\/tommcfarlin\/d72e8d0e5d66d5e905f771254c3ad566\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">aqui est\u00e1 o c\u00f3digo<\/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>Observe no c\u00f3digo acima que estou interessado apenas em recuperar a diferen\u00e7a em anos. Voc\u00ea pode optar por escolher algo diferente. Se for esse o caso, a API oferecida pelo PHP facilita isso examinando as propriedades do <a href=\"https:\/\/php.net\/manual\/en\/class.datetime.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">objeto DateTime<\/a>.<\/p>\n<p>Mas dadas duas datas, esta \u00e9 uma maneira direta de encontrar a diferen\u00e7a de datas usando PHP no contexto do WordPress.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Existem v\u00e1rias maneiras de encontrar a diferen\u00e7a de datas usando PHP. Aqui est\u00e1 o processo que venho acompanhando h\u00e1 algum tempo.<\/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":[898,722,920,806,846,867],"tags":[1170],"class_list":["post-229228","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo-2","category-desenvolvedor","category-outro","category-php-8","category-tutoriais","category-wordpress-8","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/229228","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=229228"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/229228\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/167515"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=229228"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=229228"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=229228"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}