(PHP 4, PHP 5, PHP 7)
date — Formata a data e a hora local
$format
   [, int $timestamp
  ] )
   Retorna uma string de acordo com a string de formato informada usando o
   inteiro timestamp informado, ou a hora atual local
   se nenhum timestamp for informado. Em outras palavras, o parâmetro timestamp
   é opcional e padronizado para o valor de time().
  
format
       A string de formatação da data a ser mostrada. Veja as opções
       de formatação abaixo. Também existem diversas
       constantes predefinidas de data
       que podem ser utilizadas em substituição, por exemplo, a constante DATE_RSS
       contêm a string de formatação 'D, d M Y H:i:s'.
      
Caractere de format | 
           Descrição | Exemplo de valores retornados | 
|---|---|---|
| Dia | --- | --- | 
| d | Dia do mês, 2 dígitos com zero à esquerda | 01 até 31 | 
| D | Uma representação textual de um dia, três letras | Mon até Sun | 
| j | Dia do mês sem zero à esquerda | 1 até 31 | 
| l ('L' minúsculo) | A representação textual completa do dia da semana | Sunday até Saturday | 
| N | Representação numérica ISO-8601 do dia da semana (adicionado no PHP 5.1.0) | 1 (para Segunda) até 7 (para Domingo) | 
| S | Sufixo ordinal inglês para o dia do mês, 2 caracteres | st, nd, rd ou th. Funciona bem com j | 
| w | Representação numérica do dia da semana | 0 (para domingo) até 6 (para sábado) | 
| z | O dia do ano (iniciando em 0) | 0 até 365 | 
| Semana | --- | --- | 
| W | Número do ano da semana ISO-8601, começa na Segunda (adicionado no PHP 4.1.0) | Exemplo: 42 (a 42ª semana do ano) | 
| Mês | --- | --- | 
| F | Um representação completa de um mês, como January ou March | January até December | 
| m | Representação numérica de um mês, com zero à esquerda | 01 a 12 | 
| M | Uma representação textual curta de um mês, três letras | Jan a Dec | 
| n | Representação numérica de um mês, sem zero à esquerda | 1 a 12 | 
| t | Número de dias de um dado mês | 28 até 31 | 
| Ano | --- | --- | 
| L | Se está em um ano bissexto | 1 se está em ano bissexto, 0, caso contrário. | 
| o | Número do ano ISO-8601. Este tem o mesmo valor como Y, exceto que se o número da semana ISO (W) pertence ao anterior ou próximo ano, o ano é usado ao invés. (adicionado no PHP 5.1.0) | Exemplos: 1999 ou 2003 | 
| Y | Uma representação de ano completa, 4 dígitos | Exemplos: 1999 ou 2003 | 
| y | Uma representação do ano com dois dígitos | Exemplos: 99 ou 03 | 
| Tempo | --- | --- | 
| a | Antes/Depois de meio-dia em minúsculo | am or pm | 
| A | Antes/Depois de meio-dia em maiúsculo | AM or PM | 
| B | Swatch Internet time | 000 até 999 | 
| g | Formato 12-horas de uma hora sem zero à esquerda | 1 até 12 | 
| G | Formato 24-horas de uma hora sem zero à esquerda | 0 até 23 | 
| h | Formato 12-horas de uma hora com zero à esquerda | 01 até 12 | 
| H | Formato 24-horas de uma hora com zero à esquerda | 00 até 23 | 
| i | Minutos com zero à esquerda | 00 até 59 | 
| s | Segundos, com zero à esquerda | 00 até 59 | 
| u | Microssegundos (adicionado no PHP 5.2.2). Note que a função date() sempre gerará 000000, já que aceita um parâmetro integer, enquanto que DateTime::format() possui suporte a microssegundos se DateTime foi criado com microssegundos. | Example: 654321 | 
| Fuso horário | --- | --- | 
| e | Identificador do fuso horário (adicionado no PHP 5.1.0) | Exemplos: UTC, GMT, Atlantic/Azores | 
| I (i maiúsculo) | Se a data está ou não no horário de verão | 1 se horário de verão, 0, caso contrário. | 
| O | Deslocamento ao Horário de Greenwish (GMT) em horas | Exemplo: +0200 | 
| P | Deslocamento ao Horário de Greenwish (GMT) com dois pontos entre horas e minutos (adicionado no PHP 5.1.3) | Exemplo: +02:00 | 
| T | Abreviação do fuso horário | Exemplos: EST, MDT ... | 
| Z | Deslocamento, em segundos, do fuso horário. O deslocamento para fusos horários a oeste de UTC sempre será negativa, e para aqueles à leste de UTC sempre será positiva. | -43200 até 50400 | 
| Data/Hora completa | --- | --- | 
| c | Data ISO 8601 (adicionado no PHP 5) | 2004-02-12T15:19:21+00:00 | 
| r | » RFC 2822 formatted date | Exemplo: Thu, 21 Dec 2000 16:01:07 +0200 | 
| U | Segundos desde Unix Epoch (January 1 1970 00:00:00 GMT) | Veja também time() | 
Caracteres não reconhecidos na string de formatação serão impressos como são. O formato Z será sempre retornará 0 quando usar gmdate().
Nota:
Sabendo que esta função aceita somente timestamps integer o caractere de formatação u é útil somente quando utilizado com a função date_format() com um timestamp do usuário criado com date_create().
timestamp
 O parâmetro opcional timestamp é um
 integer Unix timestamp cujo padrão é a hora local
 se timestamp não for informado. Em outras
 palavras, o padrão é o valor da função time().
   Retorna uma string da data formatada. Se um valor não-numérico é usado para
   timestamp, FALSE é retornado e um erro de nível
   E_WARNING é emitido.
  
Todas as chamadas a funções de data/hora gerarão um E_NOTICE
se o fuso horário não for válido, e/ou uma mensagem E_STRICT
ou E_WARNING
se utilizar as configurações do sistema ou a variável de ambiente
TZ. Veja também date_default_timezone_set()
| Versão | Descrição | 
|---|---|
| 5.1.0 | O intervalo válido de um timestamp é tipicamente de Sex, 13 Dez 1901 20:45:54 GMT até Ter, 19 Jan 2038 03:14:07 GMT. (Estas são as datas que correspondem ao valor mínimo e máximo para um inteiro com sinal de 32-bit). Contudo, em versões anteriores ao PHP 5.1.0 este intervalo era limitado de 01-01-1970 para 19-01-2038 em alguns sistemas (e.g. Windows). | 
| 5.1.0 | 
Agora lança erros   | 
| 5.1.1 | 
        Há constantes úteis
        do padrão de formato de data/hora que podem ser usados para especificar o
        parâmetro format.
        | 
      
Exemplo #1 Exemplos da função date()
<?php
// Modifica a zona de tempo a ser utilizada. Disnovível desde o PHP 5.1
date_default_timezone_set('UTC');
// Exibe alguma coisa como: Monday
echo date("l");
// Exibe alguma coisa como: Monday 8th of August 2005 03:12:46 PM
echo date('l jS \of F Y h:i:s A');
// Exibe: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));
/* utiliza as constantes do parâmetro de formato */
// Exibe alguma coisa como: Mon, 15 Aug 2005 15:12:46 UTC
echo date(DATE_RFC822);
// Exibe alguma coisa como: 2000-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));
?>
Para prevenir que um caractere reconhecido na string de formatação seja expandido, escape-o, precedendo-o com uma barra invertida. Se o caractere com a barra invertida já é uma sequência especial, você pode precisar também escapar a barra invertida.
Exemplo #2 Caracteres de escape em date()
<?php
// exibe algo como: Wednesday the 15th
echo date("l \\t\h\e jS");
?>
É possível utilizar as funções date() e mktime() juntas para encontrar datas no futuro ou no passado.
Exemplo #3 Exemplo da date() e mktime()
<?php
$tomorrow  = mktime (0, 0, 0, date("m")  , date("d")+1, date("Y"));
$lastmonth = mktime (0, 0, 0, date("m")-1, date("d"),  date("Y"));
$nextyear  = mktime (0, 0, 0, date("m"),  date("d"),  date("Y")+1);
?>
Nota:
Isso pode ser mais confiável do que simplesmente adicionar ou subtrair o número de segundos em um dia ou mês para um timestamp, devido o horário de verão.
Alguns exemplos de formatação de date(). Note que você deve escapar qualquer outro caractere, pois qualquer um que possua um significado especial produzirá resultados indesejáveis, e outros caracteres podem assumir significado em futuras versões do PHP. Quando usar escape, certifique-se de usar aspas simples para evitar que caracteres como \n virem novas linhas.
Exemplo #4 Formatação com a função date()
<?php
// Assuming today is March 10th, 2001, 5:16:18 pm, and that we are in the
// Mountain Standard Time (MST) Time Zone
$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$today = date("m.d.y");                         // 03.10.01
$today = date("j, n, Y");                       // 10, 3, 2001
$today = date("Ymd");                           // 20010310
$today = date('h-i-s, j-m-y, it is w Day');     // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // it is the 10th day.
$today = date("D M j G:i:s T Y");               // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:18 m is month
$today = date("H:i:s");                         // 17:16:18
$today = date("Y-m-d H:i:s");                   // 2001-03-10 17:16:18 (the MySQL DATETIME format)
?>
Para formatar datas em outros idiomas, você deve utilizar as funções setlocale() e strftime() em vez de date().
Nota:
Para gerar um timestamp de uma string da representação da data, pode-se utilizar as funções strtotime(). Adicionalmente, alguns banco de dados tem funções para converter os formatos de data para timestamps (como a função » UNIX_TIMESTAMP do MySQL).
O timestamp do início da requisição está disponível na variável $_SERVER['REQUEST_TIME'] desde o PHP 5.1.