{"id":228791,"date":"2022-10-27T20:28:00","date_gmt":"2022-10-27T17:28:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228791"},"modified":"2022-11-09T04:17:19","modified_gmt":"2022-11-09T01:17:19","slug":"encuentra-la-diferencia-en-las-fechas-usando-php-y-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/encuentra-la-diferencia-en-las-fechas-usando-php-y-wordpress\/","title":{"rendered":"Encuentra la diferencia en las fechas usando PHP (y WordPress)"},"content":{"rendered":"<p>Trabajar con fechas en PHP es una de esas cosas en las que tiene un buen manejo, est\u00e1 trabajando para comprenderlo o est\u00e1 atrapado en la madriguera del conejo de la documentaci\u00f3n que est\u00e1 en el manual.<\/p>\n<p>Sin embargo, si est\u00e1 trabajando con WordPress, la posibilidad de que necesite trabajar con fechas es bastante alta. Casi todo lo que publicamos tiene al menos una fecha asociada.<\/p>\n<p>Esto incluye publicaciones, p\u00e1ginas, tipos de publicaciones personalizadas, revisiones, borradores, etc.<\/p>\n<p>Adem\u00e1s, existe la posibilidad de que el trabajo personalizado que necesita desarrollar requiera que encuentre la diferencia en dos fechas usando PHP. Y aunque hay varias formas de hacer esto, hay un proceso que he estado siguiendo por algo.<\/p>\n<h2>La diferencia de fechas usando PHP<\/h2>\n<p>Antes de pasar por mi ejemplo, ser\u00e1 \u00fatil dar un poco de contexto. Despu\u00e9s de todo, lo que sea en lo que est\u00e9s trabajando probablemente ser\u00e1 un poco diferente de lo que estoy haciendo.<\/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=\"Encuentra la diferencia en las fechas usando PHP (y WordPress)\" ><\/a><\/p>\n<p>La idea general podr\u00eda seguir siendo la misma, por lo que la esencia de lo que est\u00e1 haciendo a\u00fan se puede extrapolar del c\u00f3digo a continuaci\u00f3n. Pero perm\u00edtanme dar un ejemplo concreto de mi propio trabajo:<\/p>\n<ol>\n<li>Tengo un tipo de publicaci\u00f3n personalizada que representa un evento y el evento como una fecha de publicaci\u00f3n.<\/li>\n<li>Necesito saber cuando comienza el evento. Para hacer esto, defino el formato de fecha usando el formato n\/j\/Y compatible con PHP y luego lo convierto a una fecha usando la funci\u00f3n de <a href=\"https:\/\/php.net\/manual\/en\/function.date.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">fecha<\/a> de PHP .<\/li>\n<li>A continuaci\u00f3n, tomo la fecha de hoy (como una manera f\u00e1cil de determinar la diferencia de fechas usando PHP para este ejemplo) y la convierto en una fecha usando la misma funci\u00f3n y formato n\/j\/Y.<\/li>\n<li>Despu\u00e9s de eso, instancia dos objetos <a href=\"https:\/\/php.net\/manual\/en\/class.datetime.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">DateTime y calculo la diferencia.<\/a><\/li>\n<\/ol>\n<p>Si eso no es sencillo, recomiendo hacer clic en los enlaces anteriores. De lo contrario, <a href=\"https:\/\/gist.github.com\/tommcfarlin\/d72e8d0e5d66d5e905f771254c3ad566\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">aqu\u00ed est\u00e1 el 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 en el c\u00f3digo anterior que solo estoy interesado en recuperar la diferencia en a\u00f1os. Puedes optar por elegir algo diferente. Si ese es el caso, la API que ofrece PHP facilita hacerlo examinando las propiedades del <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>Pero dadas dos fechas, esta es una forma sencilla de encontrar la diferencia en las fechas usando PHP en el contexto de WordPress.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hay m\u00faltiples formas de encontrar la diferencia en las fechas usando PHP. Aqu\u00ed est\u00e1 el proceso que he estado siguiendo durante alg\u00fan tiempo.<\/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":[892,716,914,800,840,861],"tags":[1172],"class_list":["post-228791","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo","category-desarrollador","category-otro","category-php-2","category-tutoriales","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/228791","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=228791"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/228791\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/167515"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=228791"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=228791"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=228791"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}