Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Illidan

Função pra tratar datas no formato DATETIME

Recommended Posts

Função pra tratar datas no formato datetime

 

Sempre que você recupera a data de um campo do tipo "date" ou "datetime", tem aquele processo chato de converter a string no nosso formato de data padrão (ou qualquer outro formato). Com esta função, você converte a data que vem desses campos no formato que quiser, como se estivesse utilizando a função date(). Tem um exemplo de como utilizar a função no final do código.

 

Se você passar o terceiro parâmetro (que é opcional) como true, ele vai converter a data num timestamp antes de retornar a data formatada. A vantagem é que você pode usar TODOS os caracteres especiais da função date(), como por exemplo o "t", que retorna o número de dias no mês da data. A desvantagem é que os timestamps só trabalham num intervalo de anos... Aí você vê qual é a melhor opção no seu caso. :)

 

Abraços!

 

PHP
  1. <?php

  2. function date_time($date_time, $output_string, $utilizar_funcao_date = false) {
  3. // Verifica se a string está num formato válido de data ("aaaa-mm-dd" ou "aaaa-mm-dd hh:mm:ss")
  4. if (preg_match("/^(\d{4}(-\d{2}){2})( \d{2}(:\d{2}){2})?$/", $date_time)) {
  5. $valor['d'] = substr($date_time, 8, 2);
  6. $valor['m'] = substr($date_time, 5, 2);
  7. $valor['Y'] = substr($date_time, 0, 4);
  8. $valor['y'] = substr($date_time, 2, 2);
  9. $valor['H'] = substr($date_time, 11, 2);
  10. $valor['i'] = substr($date_time, 14, 2);
  11. $valor['s'] = substr($date_time, 17, 2);

  12. // Verifica se a string está num formato válido de horário ("hh:mm:ss")
  13. } else if (preg_match("/^(\d{2}(:\d{2}){2})?$/", $date_time)) {
  14. $valor['d'] = NULL;
  15. $valor['m'] = NULL;
  16. $valor['Y'] = NULL;
  17. $valor['y'] = NULL;
  18. $valor['H'] = substr($date_time, 0, 2);
  19. $valor['i'] = substr($date_time, 3, 2);
  20. $valor['s'] = substr($date_time, 6, 2);

  21. } else {
  22. return false;
  23. }

  24. if ($utilizar_funcao_date) {
  25. return date($output_string, mktime($valor['H'], $valor['i'], $valor['s'], $valor['m'], $valor['d'], $valor['Y']));
  26. }

  27. foreach (array('d', 'm', 'Y', 'y', 'H', 'i', 's') as $caractere) {
  28. $output_string = ereg_replace("(^|[^\\\\])".$caractere, "\\1".$valor[$caractere], $output_string);
  29. }
  30. $output_string = ereg_replace("(^|[^\\\\])\\\\", "\\1", $output_string);

  31. return $output_string;
  32. }


  33. // Exemplo de como usar a função
  34. $data = "2005-04-02 00:30:00"; // formato datetime

  35. echo date_time($data, "d/m/y \à\s H:i"); // retorna a string: "02/04/05 às 00:30"

  36. ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa,

 

eu tava testando umas coisas e achei um outro metodo de exibir uma parte da string:

 

PHP

[*]<?php

[*]

[*]function replace_data($s){ // supondo que retorno aaaa/mm/dd

[*] echo $s{8} . $s{9} . "/" . $s{5} . $s{6} . "/" . $s{0} . $s{1} . $s{2} . $s{3};

[*]}

[*]

[*]replace_data("2005/04/03");

[*]

[*]?>

 

so postei para mostrar outro jeito mesmo...

abracos

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.