[Tutorial ] Classe Datetime do PHP – Parte 01

Introdução

O PHP é uma linguagem de programação web muito utilizada atualmente pela sua extrema facilidade de aprendizado e pelo fato de sua arquitetura estar totalmente voltada ao programador. Os responsáveis pelo PHP acertam sempre quando integram um novo recurso na linguagem, pois sempre que algo novo é adicionado, a facilidade de acessar o mesmo é sempre fácil, prática e dinâmica em muitos casos.

Com o crescente uso do PHP por programadores que utilizam a Orientação à Objetos, o PHP acabou dando um show neste quesito após o lançamento da versão 5.

E como não poderia faltar, e o que é o tema desta sequência de tutoriais, o PHP 5 vem com uma classe interna chamada DateTime, que possui alguns recursos interessantes para manipulação de datas.

Você poderia se perguntar: "Para que eu devo utilizar classes para manipular datas?" Simples, pois você pode expandir suas classes! Sem mais comentários…

Fico feliz de hoje estar disponível na documentação do PHP conteúdo sobre tal classe, mas quando o PHP lançou este recurso, era como que algo reservado aos desenvolvedores da linguagem, e quem quisesse utilizar o mesmo precisaria fazer uma engenharia reversa no código em C do PHP para poder descobrir as maravilhas disponíveis.

Mas, como sempre tem caras bons por ai, vamos compartilhar as experiência obtida ao longo dos projetos realizados e ver o poder do PHP em ação.

Vamos criar uma classe para manipulação de datas até o final desta sequência que você vai poder estar utilizando em seus projetos.

class DateTime

Antes de mais nada, gostaria de partilhar com os amigos programadores um recurso e que se torna uma técnica que é a inspeção de objetos disponíveis pela classe Reflexion.

Vamos ver aqui como explorar a classe DateTime visualmente:


<?php

print '<pre>';

Reflection::export(new ReflectionClass('DateTime'));

print '</pre>';

?>

 

O resultado visual vai ser este:


Class [  class DateTime {



  - Constants [11] {

    Constant [ string ATOM { Y-m-d\TH:i:sP }

    Constant [ string COOKIE { l, d-M-y H:i:s T }

    Constant [ string ISO8601 { Y-m-d\TH:i:sO }

    Constant [ string RFC822 { D, d M y H:i:s O }

    Constant [ string RFC850 { l, d-M-y H:i:s T }

    Constant [ string RFC1036 { D, d M y H:i:s O }

    Constant [ string RFC1123 { D, d M Y H:i:s O }

    Constant [ string RFC2822 { D, d M Y H:i:s O }

    Constant [ string RFC3339 { Y-m-d\TH:i:sP }

    Constant [ string RSS { D, d M Y H:i:s O }

    Constant [ string W3C { Y-m-d\TH:i:sP }

  }



  - Static properties [0] {

  }



  - Static methods [0] {

  }



  - Properties [0] {

  }



  - Methods [9] {

    Method [  public method __construct {

    }



    Method [  public method format {

    }



    Method [  public method modify {

    }



    Method [  public method getTimezone {

    }



    Method [  public method setTimezone {

    }



    Method [  public method getOffset {

    }



    Method [  public method setTime {

    }



    Method [  public method setDate {

    }



    Method [  public method setISODate {

    }

  }

}

Como você pode ver, nós temos ai muita informação disponível.

A classe DateTime possui um construtor ( __construct ), este método retorna um objeto DateTime se for especificado um valor. E com ele poderemos tratar vários formatos de exibição, mas por hora vamos nos reter ao básico.

Esta informação atualmente é mais por curiosidade. Vamos ver com utilizar a classe:


<?php
/*
* Declaramos a classe, básico!
*/
$data = new DateTime();
/*
* Imprimimos uma frase com a data atual
*/

$hoje = sprintf(
"Hoje é %s/%s/%s",
$data->format('d'),
$data->format('m'),
$data->format('Y')
);
echo $hoje;
?>

Se você prestou bem atenção, deve ter notado que o método format() está correspondendo à função date() tradicional. De fato! É isto mesmo, você poderá utilizar os mesmos parâmetros da função date() no método format().

Eu gosto de treinar bem para fixar, então ai abaixo estou colocando um parte da documentação do PHP contendo os parâmetros do método format() que são os mesmos da função date() para você ficar brincando com a classe até eu publicar a segunda parte.

Os seguintes caracteres são reconhecidos na string do parâmetro

format

Caractere de format

Descrição Exemplo de valores retornados
Day
d Dia do mês, 2 digitos com preenchimento de zero 01 até 31
D Uma representação textual de um dia, três letras Mon até Sun
j Dia do mês sem preenchimento de zero 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 (começando do 0) 0 through 365
Semana
W Número do ano da semana ISO-8601, semanas começam na Segunda (adicionado no PHP 4.1.0) Exemplo: 42 (the 42nd week in the year)
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 leading zeros 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 leading zeros 1 a 12
t Número de dias de um dado mês 28 through 31
Year
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 preenchimento de zero 1 até 12
G Formato 24-horas de uma hora sem preenchimento de zero 0 até 23
h Formato 12-horas de uma hora com zero preenchendo à esquerda 01 até 12
H Formato 24-horas de uma hora com zero preenchendo à esquerda 00 até 23
i Minutos com zero preenchendo à esquerda 00 até 59
s Segundos, com zero preenchendo à esquerda 00 até 59
u Milisegundos (adicionado no PHP 5.2.2) Exemplo: 54321
Timezone
e Identificador de Timezone (adicionado no PHP 5.1.0) Exemplos: UTC, GMT, Atlantic/Azores
I (capital i) 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 Diferença para Greenwich time (GMT) em horas Exemplo: +0200
P Diferença para Greenwich time (GMT) com dois pontos entre horas e minutos (adicionado no PHP 5.1.3) Exemplo: +02:00
T Abreviação de Timezone Exemplos: EST, MDT
Z Timezone offset in seconds. The offset for timezones west of UTC is always

negative, and for those east of UTC is always positive.

-43200 até 50400
Full Date/Time
c ISO 8601 date (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 a Época Unix (January 1 1970 00:00:00 GMT) Veja também time()

Conclusão

Nesta primeira parte do tutorial você aprendeu que o PHP disponibiliza a partir da versão 5 uma classe para manipulação de datas. Descobriu que a função date() pode ser agora acessada por um objeto através da classe DateTime pelo método format().

No próximo tutorial, vamos criar uma classe para transformar os valores da data para o português. Boa sorte e até a próxima!

5 comentários sobre “[Tutorial ] Classe Datetime do PHP – Parte 01”

  1. Estou come?ando a estudar nesta faz pouco tempo, ent?o, n?o consegui obter conhecimento o suficiente para apresentar um semin?rio. Gostaria muito que enviasse algum exemplo.

  2. havia realmente necessidade de usar um “sprintf”, onde bastava você usar um “print $data->format(‘d/m/Y’);” irias obter o mesmo resultado!
    qual a vantagem de se usar o DateTime? se eu posso usar tbm o Time()?

Deixe uma resposta

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