Funções de Data/Hora
PHP Manual

strftime

(PHP 4, PHP 5)

strftimeFormata uma hora/data de acordo com as configurações locais

Descrição

string strftime ( string $format [, int $timestamp ] )

Formata uma hora/data local de acordo com o configuração de locale. Nome do mês e dia da semana e outras strings dependem do atual local definido com setlocale().

Note que todas as conversões especificadas podem ser suportadas pela sua biblioteca C, em alguns casos elas não serão suportadas pelo PHP strftime(). Além disso, nem todas as plataformas suportam timestamps negativos, então sua faixa de datas não pode ser limitada mais cedo do que a época Unix. Isto significa e.g. %e, %T, %R e %D (e outras mais) e datas anteriores a Jan 1, 1970 não funcionarão em Windows, algumas distribuições Linux, e alguns outros sistemas operacionais. Para sistemas Windows um resumo completo dos especificadores de conversão suportados podem ser encontrados neste website » MSDN .

Parâmetros

format

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
    Aviso

    Sun Solaris parece iniciar o Domingo como 1 embora ISO 9889:1999 (o padrão C corrente) claramente especificados que ele poderia ser 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.

timestamp

O parâmetro opcional timestamp é um integer Unix timestamp cujo padrão é a hora local se timestamp não for dado. Em outras palavras, o padrão é o valor de time().

Valor Retornado

Retorna uma string formatada de acordo com o formato dado em timestamp ou o horário corrente se nenhum timestamp é dado. Nomes de mês e dia da semana e outras strings dependentes de linguagens respeitam o atual locale definido com setlocale().

Erros

Toda a chamada a uma função de data/hora irá gerar um se a zona da hora não for valida, e/ou uma mensagem E_STRICT ou E_WARNING se estiver usando a definição do sistema ou a variável de ambiente TZ. Veja também date_default_timezone_set()

Changelog

Versão Descrição
5.1.0

Agora emite E_STRICT e E_NOTICE em erros da zona de horário.

Exemplos

Este exemplo funciona se você tem os respectivos locales instalados em seu sistema.

Exemplo #1 strftime() exemplos locais

<?php
setlocale
(LC_TIME"C");
echo 
strftime("%A");
setlocale(LC_TIME"fi_FI");
echo 
strftime(" in Finnish is %A,");
setlocale(LC_TIME"fr_FR");
echo 
strftime(" in French %A and");
setlocale(LC_TIME"de_DE");
echo 
strftime(" in German %A.\n");
?>

Exemplo #2 Exemplo de número de semana ISO 8601:1988

<?php
/*     December 2002 / January 2003
ISOWk  M   Tu  W   Thu F   Sa  Su
----- ----------------------------
51     16  17  18  19  20  21  22 
52     23  24  25  26  27  28  29
1      30  31   1   2   3   4   5
2       6   7   8   9  10  11  12
3      13  14  15  16  17  18  19   */

// Outputs: 12/28/2002 - %V,%G,%Y = 52,2002,2002
echo "12/28/2002 - %V,%G,%Y = " strftime("%V,%G,%Y"strtotime("12/28/2002")) . "\n";

// Outputs: 12/30/2002 - %V,%G,%Y = 1,2003,2002
echo "12/30/2002 - %V,%G,%Y = " strftime("%V,%G,%Y"strtotime("12/30/2002")) . "\n";

// Outputs: 1/3/2003 - %V,%G,%Y = 1,2003,2003
echo "1/3/2003 - %V,%G,%Y = " strftime("%V,%G,%Y",strtotime("1/3/2003")) . "\n";

// Outputs: 1/10/2003 - %V,%G,%Y = 2,2003,2003
echo "1/10/2003 - %V,%G,%Y = " strftime("%V,%G,%Y",strtotime("1/10/2003")) . "\n";



/*     December 2004 / January 2005
ISOWk  M   Tu  W   Thu F   Sa  Su
----- ----------------------------
51     13  14  15  16  17  18  19
52     20  21  22  23  24  25  26
53     27  28  29  30  31   1   2
1       3   4   5   6   7   8   9
2      10  11  12  13  14  15  16   */

// Outputs: 12/23/2004 - %V,%G,%Y = 52,2004,2004
echo "12/23/2004 - %V,%G,%Y = " strftime("%V,%G,%Y",strtotime("12/23/2004")) . "\n";

// Outputs: 12/31/2004 - %V,%G,%Y = 53,2004,2004
echo "12/31/2004 - %V,%G,%Y = " strftime("%V,%G,%Y",strtotime("12/31/2004")) . "\n";

// Outputs: 1/2/2005 - %V,%G,%Y = 53,2004,2005
echo "1/2/2005 - %V,%G,%Y = " strftime("%V,%G,%Y",strtotime("1/2/2005")) . "\n";

// Outputs: 1/3/2005 - %V,%G,%Y = 1,2005,2005
echo "1/3/2005 - %V,%G,%Y = " strftime("%V,%G,%Y",strtotime("1/3/2005")) . "\n";

?>

Notas

Nota: %G e %V, que são baseadas nos números de semana no ISO 8601:1988 pode ser dado resultados inesperados (embora corretos) se o sistema numérico não é perfeitamente entendido. Veja exemplos da %V nesta página do manual.

Veja Também


Funções de Data/Hora
PHP Manual