{"id":171,"date":"2020-12-20T02:21:58","date_gmt":"2020-12-20T02:21:58","guid":{"rendered":"http:\/\/jplatz.com.br\/syntax\/?p=171"},"modified":"2021-11-14T23:04:54","modified_gmt":"2021-11-14T23:04:54","slug":"php-criando-datetime-sem-a-porcao-horas","status":"publish","type":"post","link":"https:\/\/jplatz.com.br\/syntax\/2020\/12\/20\/php-criando-datetime-sem-a-porcao-horas\/","title":{"rendered":"PHP Criando DateTime sem a por\u00e7\u00e3o horas"},"content":{"rendered":"\n<pre class=\"wp-block-preformatted\">$datetime_without_hours = \\DateTime::createFromFormat('!Y-m-d', '1970-08-25');\n\/\/ 1970-08-25 00:00:00.000000\n\n<meta charset=\"utf-8\">$datetime_with_hours = \\DateTime::createFromFormat('Y-m-d', '1970-08-25');\n\/\/ 1970-08-25 05:07:32.000000\n\n$datetime_with_hours->setTime(0,0);\n\/\/ 1970-08-25 00:00:00.000000\n<\/pre>\n\n\n\n<p>Esta semana mesmo eu estive trabalhando num projeto onde tive que incorporar diversos campos de data num integra\u00e7\u00e3o de sistemas com PHP. <\/p>\n\n\n\n<p>Decidi que enviar os campos com o tipo DateTime para garantir que o aplicativo que recebia a informa\u00e7\u00e3o pudesse utilizar as datas de forma segura, mas acabei me deparando com a quest\u00e3o de introspec\u00e7\u00e3o de horas para uma informa\u00e7\u00e3o genuinamente Date.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><meta charset=\"utf-8\">$datetime_with_hours = \\DateTime::createFromFormat('Y-m-d', '1970-08-25');\n\/\/ 1970-08-26 05:07:32.000000<\/pre>\n\n\n\n<p>Na primeira tentativa utilizei a m\u00e1scara <strong>Y-m-d<\/strong> simples e verifiquei que a por\u00e7\u00e3o <strong>Horas:Minutos:Segundos<\/strong> foi inserida na composi\u00e7\u00e3o da data. O PHP utilizou o Time corrente do Server e incorporou na data.<\/p>\n\n\n\n<p>Depois de uma r\u00e1pida pesquisa na internet identifiquei que este \u00e9 o comportado esperado da fun\u00e7\u00e3o. Para evitar a por\u00e7\u00e3o horas na composi\u00e7\u00e3o da data podemos fazer o uso da exclama\u00e7\u00e3o na m\u00e1scara durante a cria\u00e7\u00e3o do DateTime. <\/p>\n\n\n\n<p>Mas aten\u00e7\u00e3o, a inclus\u00e3o da exclama\u00e7\u00e3o na m\u00e1scara <strong>!Y-m-d<\/strong> far\u00e1 com que apenas um reset da data e hora corrente seja executado antes do datetime ser criado. No entanto, todos os elementos explicitamente definidos na m\u00e1scara ser\u00e3o tomados em considera\u00e7\u00e3o no momento da cria\u00e7\u00e3o do objeto datetime.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><meta charset=\"utf-8\">$datetime_with_hours = \\DateTime::createFromFormat('!Y-m-d H:i:s', '1970-08-25 13:14:15');\n\/\/ 1970-08-25 13:14:15.000000<\/pre>\n\n\n\n<p>E caso voc\u00ea j\u00e1 possua um objeto que tenha sido criado com a por\u00e7\u00e3o horas na composi\u00e7\u00e3o, voc\u00ea pode resetar este conte\u00fado para algo qualquer inclusive a nossa desejada hora <strong>ZERO<\/strong>, conforme demonstrado abaixo.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><meta charset=\"utf-8\">$datetime_with_hours = \\DateTime::createFromFormat('Y-m-d', '1970-08-25');\n\/\/ 1970-08-25 05:07:32.000000\n\n$datetime_with_hours->setTime(0,0);\n\/\/ 1970-08-25 00:00:00.000000<\/pre>\n\n\n\n<p>Tamb\u00e9m, se a data a ser criada seja algo pr\u00f3xima da data corrente voc\u00ea pode utilizar par\u00e2metros no construtor do objeto DateTime para criar o objeto j\u00e1 sem a por\u00e7\u00e3o horas.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$datetime_without_hours = new \\DateTime(\"midnight\");\n\/\/ 2021-11-13 00:00:00.000000\n\n$datetime_without_hours = new \\DateTime(\"today\");\n\/\/ 2021-11-13 00:00:00.000000\n\n$datetime_without_hours = new \\DateTime(\"yesterday\");\n\/\/ 2021-11-12 00:00:00.000000\n\n$datetime_without_hours = new \\DateTime(\"tomorrow\");\n\/\/ 2021-11-14 00:00:00.000000<\/pre>\n\n\n\n<p>E a\u00ed? Curtiu estes recursos para cria\u00e7\u00e3o de datas?<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>$datetime_without_hours = \\DateTime::createFromFormat(&#8216;!Y-m-d&#8217;, &#8216;1970-08-25&#8217;); \/\/ 1970-08-25 00:00:00.000000 $datetime_with_hours = \\DateTime::createFromFormat(&#8216;Y-m-d&#8217;, &#8216;1970-08-25&#8217;); \/\/ 1970-08-25 05:07:32.000000 $datetime_with_hours->setTime(0,0); \/\/ 1970-08-25 00:00:00.000000 Esta semana mesmo eu estive trabalhando num projeto onde tive que incorporar diversos campos de data num integra\u00e7\u00e3o de sistemas com PHP. Decidi que enviar os campos com o tipo DateTime para garantir que o aplicativo que [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26,2,3],"tags":[76,75],"class_list":["post-171","post","type-post","status-publish","format-standard","hentry","category-backend","category-coding","category-php","tag-y-m-d","tag-datetime"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/posts\/171","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/comments?post=171"}],"version-history":[{"count":10,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/posts\/171\/revisions"}],"predecessor-version":[{"id":386,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/posts\/171\/revisions\/386"}],"wp:attachment":[{"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/media?parent=171"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/categories?post=171"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/tags?post=171"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}