Formatando data e hora com php, agora com DateTime

Algum tempo atrás eu tinha postado algumas funções e formas para se trabalhar com datas, hoje estou atualizando este posta para postar como se trabalha com datas com a classe nativa do PHP DateTime.

// Exibindo a data atual formatada para o formato Brasil, e estou pegando a data atual
// Neste exemplo estou usando data e hora completa "d/m/Y H:i:s",
// mais eu poderia simplesmente, mostrar só o dia ou somente o ano
$data = new \DateTime();
echo $data->format("d/m/Y H:i:s");

//Saida: 23/10/2013 12:46:02

//===================
// Adicionando 45 dias a minha data informada
$data = new \DateTime("2013-10-23");
$data->add(new DateInterval("P45D"));
//$data->add(new DateInterval("P1M")); //Adicionando 1 mês a data
//$data->add(new DateInterval("P1Y")); //Adicionando 1 ano a data
echo $data->format("d/m/Y");

//Saida: 07/12/2013

//===================
// Subtraindo 45 dias a minha data informada
$data = new \DateTime("2013-10-23");
$data->sub(new DateInterval("P45D"));
//$data->sub(new DateInterval("P1M")); //Subtraindo 1 mês a data
//$data->sub(new DateInterval("P1Y")); //Subtraindo 1 ano a data
echo $data->format("d/m/Y");

//Saida: 08/09/2013

//===================
// Formando a saida de uma entrada fora do padrao USA
// Neste exemplo estou passando uma data no formato DD/MM/YYYY,
// mais esta classe não consegue fazer o parse da data neste formato,
// então estou alterando o a "/" por "-"
$data = new \DateTime(str_replace("/", '-', '23/10/2013'));
// Aqui estou informando para o PHP o TimeZone para que ele possa formatar corretamente
$data->setTimezone( new \DateTimeZone( "America/Sao_Paulo" ) );
echo $data->format("Y-m-d");

//Saida: 2013-10-23

============= POSTAGEM ANTIGA ===============

Formatando uma data:

<br />$data = '2012-10-24';<br />strftime("%d/%m/%Y", strtotime($data));<br />// Saída = 24/10/2012<br />

Formatando datahora:

<br />$dataHora = '2012-10-24 16:30:08';<br />strftime("%d/%m/%Y %H:%M:%S", strtotime($dataHora));<br />// Saída = 24/10/2012 15:22:08<br />

Documentação completa você encontra em: http://php.net/manual/pt_BR/function.strftime.php

Abaixo listo os parâmetros:

As seguintes conversões especificadoras são conhecidas no formato de string:

  • %a – dia da semana abreviado de acordo com a localidade
  • %A – nome da semana completo de acordo com a localidade
  • %b – nome do mês abreviado de acordo com a localidade
  • %B – nome do mês completo de acordo com a localidade
  • %c – representação da data e hora preferida pela a localidade
  • %C – número do século (o ano dividido por 100 e truncado para um inteiro, de 00 até 99)
  • %d – dia do mês como um número decimal (de 01 até 31)
  • %D – mesmo que %m/%d/%y
  • %e – dia do mês como um número decimal, um simples dígito é precedido por espaço (de ‘ 1′ até ’31’)
  • %g – como %G, mas sem o século.
  • %G – o 4-dígito do ano correspodendo as ISO week number (see %V). Este tem o mesmo formato e valor que %Y, exceto que se o ISO week number pertence ao prévio ou próximo ano, aquele ano é usado ao invés deste.
  • %h – mesmo que %b
  • %H – hora como um número decimal usando um relógio de 24-horas (de 00 até 23)
  • %I – hora como um número decimal usando um relógio de 12-hoas (de 01 até 12)
  • %j – dia do ano como número decimal (de 001 até 366)
  • %m – mês como número decimal (de 01 até 12)
  • %M – minuto como número decimal
  • %n – caracter novalinha
  • %p – um dos dois `am’ ou `pm’ de acordo com o valor da hora dada, ou as strings correspondentes para a localidade
  • %r – hora em a.m. e p.m. notação
  • %R – hora em notação de 24 horas
  • %S – segundo como um número decimal
  • %t – caracter tab
  • %T – hora corrente, igual a %H:%M:%S
  • %u – dia da semana como número decimal [1,7], com 1 representando Segunda-feira
  • %U – dia da semana do ano corrente como número decimal, começando com o primeiro domingo como o primeiro dia da primeira semana
  • %V – O número da semana corrente ISO 8601:1988 do ano corrente como um número decimal, de 01 até 53, onde semana 1 é a primeira semana que tem pelo menos 4 dias no ano corrente, e com segunda-feira como o primeiro dia da semana. (Use %G ou %g para o componente anual que corresponde ao dia da semana para o para o timestamp especificado.)
  • %W – dia da semana do ano corrente como número decimal, começando com o a segunda-feira como o primeiro dia da primera semana
  • %w – dia da semana como número decimal, domingo sendo 0
  • %x – representação preferida para a data para a localidade corrente sem a hora
  • %X – representação preferida para a hora para a localidade corrente sem a data
  • %y – ano como número decimal sem o século (de 00 até 99)
  • %Y – ano como número decimal incluindo o século
  • %Z ou %z – time zone, nome ou abreviação (dependendo do sistema operacional)
  • %% – a literal `%’ character

Tamanho máximo deste parâmetro é 1023 caracteres.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.