terra 1 Denunciar post Postado Setembro 9, 2013 Olá, então minha duvida é simples, mas não estou conseguindo fazer, tentei algumas coisas mas nada deu certo. Não quero mudar a forma de inserir e nem mudar no mysql. Quero mudar a data no formato 20130912210100 para 2013-09-12 Valeu Compartilhar este post Link para o post Compartilhar em outros sites
Rogério Santana 172 Denunciar post Postado Setembro 9, 2013 Isso? <?php echo date('Y-m-d H:i:s');?> Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Setembro 9, 2013 2013-09-12 é formato padrão de um campo date... Compartilhar este post Link para o post Compartilhar em outros sites
terra 1 Denunciar post Postado Setembro 9, 2013 eu gravo no bd assim 20130912210100, não posso mudar pq tem varias coisas que usa nesse formato. Tenho uma aplicação que preciso usar no 2013-09-12 pq pego de um $_GET então eu preciso transformar a data 20130912210100 em 2013-09-12 e comparar com $_GET e mostrar o resultado valeu Compartilhar este post Link para o post Compartilhar em outros sites
Leozitho 81 Denunciar post Postado Setembro 9, 2013 Neste formato você só vai conseguir trabalhar fazendo uma gambiarra com REGEX ou com a função substr, pois não é um formato conhecido pelo PHP. Compartilhar este post Link para o post Compartilhar em outros sites
cassiane 4 Denunciar post Postado Setembro 9, 2013 date("Y/m/d") = 20130912 ; se é só a data é isso aí Compartilhar este post Link para o post Compartilhar em outros sites
Osmar L Lima 51 Denunciar post Postado Setembro 9, 2013 20130912210100 em 2013-09-12: $d = '20130912210100';#vem via GET?? $x = substr($d,0,8); $y = substr($x,0,4); $m = substr($x,4,2); $d = substr($x,6,2); $data = $y.'-'.$m.'-'.$d; echo $data; Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Rangel 208 Denunciar post Postado Setembro 9, 2013 wtf???? é simples.. $formato = 'd-m-Y'; $data = '20130912210100'; echo date($formato, strtotime($data)); você pode por qualquer formato ai... Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Setembro 9, 2013 http://br2.php.net/manual/pt_BR/function.strtotime.php date('Y-m-d', strtotime('20130912210100')); ou do jeito legal: (new DateTime('20130912210100'))->format('Y-m-d'); Compartilhar este post Link para o post Compartilhar em outros sites
angelorubin 142 Denunciar post Postado Setembro 9, 2013 Boa tarde, preg_match() substr() implode() E para finalizar você utiliza um if/else e terá o que precisa. <?php // Sua String $string = '20130912whatever'; // Expressao Regular (PCRE) $expressaoRegular = '/[0-9]{8}/'; // Função preg_match() preg_match($er, $string, $resultado); // Um array $parteData = array(); // Função substr() $parteData[0] = substr($resultado[0], 0, 4); $parteData[1] = substr($resultado[0], 4, -2); $parteData[2] = substr($resultado[0], 6, 7); // Função implode() $data = implode('/',$parteData); // Seu get $_GET = '2013/09/12'; // Comparação if($data === $_GET){ echo "As datas são idênticas."; } else { echo "As datas são diferentes."; } ?> Lembrando que se mudar o formato da data para por exemplo (2013098), a ER falhará e todo o resto consequentemente. Espero que ajude. Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Rangel 208 Denunciar post Postado Setembro 10, 2013 Boa tarde, preg_match() substr() implode() E para finalizar você utiliza um if/else e terá o que precisa. <?php // Sua String $string = '20130912whatever'; // Expressao Regular (PCRE) $expressaoRegular = '/[0-9]{8}/'; // Função preg_match() preg_match($er, $string, $resultado); // Um array $parteData = array(); // Função substr() $parteData[0] = substr($resultado[0], 0, 4); $parteData[1] = substr($resultado[0], 4, -2); $parteData[2] = substr($resultado[0], 6, 7); // Função implode() $data = implode('/',$parteData); // Seu get $_GET = '2013/09/12'; // Comparação if($data === $_GET){ echo "As datas são idênticas."; } else { echo "As datas são diferentes."; } ?> Lembrando que se mudar o formato da data para por exemplo (2013098), a ER falhará e todo o resto consequentemente. Espero que ajude. whyyyyyy???? Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Setembro 10, 2013 Eu não entendo o porque, quando falamos em "data no php", os programadores gostam de complicar tanto. A resposta mais que completa está no post #9. É recomendado o uso da biblioteca DateTime no lugar das antigas funções date. P.S.: post #10 me deu calafrios... Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Rangel 208 Denunciar post Postado Setembro 10, 2013 Esse cara matou uma barata com uma bazuca. Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Setembro 10, 2013 Esse cara matou uma barata com uma bazuca. esse é o objetivo! Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Setembro 10, 2013 Então, eu nem tinha percebido que, uns posts mais tarde, ele disse que precisava comparar [inline]'20130912210100'[/inline] com [inline]'2013-09-12'[/inline]. Mas, ainda assim, o mais sobrinho que consegui imaginar foi um substr com str_replace $data_do_db = '20130912210100'; $_GET['data'] = '2013-09-12'; var_dump(str_replace('-', '', $_GET['data']) === substr($data_do_db, 0, 8)); Ainda assim, ambos os formatos são compatíveis com DateTime. $data_do_db = new DateTime('20130912210100'); $data_do_db->setTime(0, 0); var_dump($data_do_db == new DateTime('2013-09-12')); Compartilhar este post Link para o post Compartilhar em outros sites
William Monteiro_35606 4 Denunciar post Postado Setembro 10, 2013 nossa..... acho que o Gabriel Heming tem razão.... 1º ponto do problema, você precisa ter um padrão ou no formato do BD ou no formado do GET, ambos são compatíveis com o datatime. 2º após esta "normalização" da variável você trabalhar com ela, fazendo as comparações, cálculos e etc; O maior problema que vejo nas questões de datas e que o padrão do BD e diferente do que utilizamos no Brasil então sempre que vamos gravar e exibir as datas precisamos fazer as conversões. O problema da conversão e que existe milhares maneiras de se fazer e as vezes o pessoal vai por uma caminho mais difícil. <?php $data = '20130912210100'; echo date('Y-m-d', strtotime($data)); ?> Compartilhar este post Link para o post Compartilhar em outros sites
angelorubin 142 Denunciar post Postado Setembro 10, 2013 P.S.: post #10 me deu calafrios... @Gabriel Heming, explique para nós o motivo do seu medo? Só implementei isso que o leozitho comentou: Neste formato você só vai conseguir trabalhar fazendo uma gambiarra com REGEX ou com a função substr, pois não é um formato conhecido pelo PHP Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Setembro 10, 2013 @Gabriel Heming, explique para nós o motivo do seu medo? Só implementei isso que o leozitho comentou: Vide post #13 e #14. Compartilhar este post Link para o post Compartilhar em outros sites
angelorubin 142 Denunciar post Postado Setembro 10, 2013 Eu entendi, mas para separarmos esta string (20130912uhahuuha) eu não preciso de substr ou ER? Não sei outra forma fácil ! Compartilhar este post Link para o post Compartilhar em outros sites
Leozitho 81 Denunciar post Postado Setembro 10, 2013 Bom, esse formato de data (20130912210100) não é comum, eu pelo menos nunca vi e já trabalho há uns 6 anos com programação. Este formato se quer é referenciado no manual do PHP. Por este motivo eu a principio havia dito no post #5 que teria que fazer uma gambiarra com substr ou REGEX. Mas estranhamente o PHP reconhece este formato. De qualquer forma não é o formato indicado para usar com banco de dados, já que existem tipos específicos de campo para trabalhar com datas no banco de dados, o DATE, DATETIME e TIMESTAMP. Acredito que pelo mesmo motivo do formato não ser comum é que alguns colegas mostraram exemplos de código com substr, mas como já foi mostrado o PHP reconhece este formato e é possível trabalhar com strtotime. Compartilhar este post Link para o post Compartilhar em outros sites