Bora ajudar o programador a transformar café em código?

Mostrando postagens com marcador Objeto. Mostrar todas as postagens
Mostrando postagens com marcador Objeto. Mostrar todas as postagens

A Classe DateTime - Trabalhando com Datas e Times com Orientação a Objetos

O PHP Progressivo agora faz parte do Programação Progressiva!

Este conteúdo foi atualizado e movido para o nosso novo endereço.

Redirecionando para: Clique aqui se não for redirecionado

Neste tutorial, vamos aprender como trabalhar com datas e tempo através da programação orientada a objetos em PHP.

Estudar pela apostila de PHP


Curso de PHP com certificado
Obter meu certificado!

Criando objetos da classe DateTime

A classe DataTime provém uma série de métodos, atributos e possibilidades que nos permitem trabalhar de maneira muito mais fácil com datas e tempo, usando orientação a objetos.

Vamos criar um objeto desta classe:
$date = new DateTime();

Se dermos um print_c($date);, veremos que no resultado é o atual, do momento da criação do objeto:
DateTime Object (
[date] => 2019-02-28 11:06:53.684238
[timezone_type] => 3
[timezone] => America/Sao_Paulo )

É um objeto do momento atual, no momento que estou programando este tutorial.

Construtor da classe DateTime

Podemos, porém, já inicializar com uma data, no formato: ano-mes-dia, para criar um objeto com uma data específica.

Vamos escolher uma data aleatória:
$date = new DateTime("2020-02-28");

O resultado da print_r($date); é:
DateTime Object (
[date] => 2019-02-28 00:00:00.000000
[timezone_type] => 3
[timezone] => America/Sao_Paulo )

Formatando datas e horas: Método format()

A classe DateTime possui o método format() que usa os mesmos parâmetros da função date(), assim podemo exibir o formato de data e hora do jeito que quisermos.

Por exemplo, para exibirmos no formato brasileiro de: dd/mm/YYYY Hora:minuto:segundo, basta fazer:
$date = new DateTime();
echo $date->format( "d/m/Y H:i:s" );

Somando e Subtraindo datas

Que tal saber qual foi a data de 35 dias atrás?
Basta fazer:

$date = new DateTime('-35 days');
echo $date->format( "d/m/Y H:i:s" );

E qual data vai ser daqui 2 semanas e 10 dias?
$date = new DateTime('+2 weeks 10 days');
echo $date->format( "d/m/Y H:i:s" );

Diferença entre datas: Método diff()

Imagina calcular, de maneira instantânea a diferença de anos, meses, dias, horas, minutos e até segundos daqui até uma outra data?

Vamos pegar a data atual:
$hoje = new DateTime();

Agora uma futura qualquer:
$futuro = new DateTime('2020-02-27');

O array $diff vai armazenar a diferença entre $futuro e $hoje, assim:
$diff = $hoje->diff($futuro);

Para exibir o resultado, faça:
 <?php
  $hoje = new DateTime();
  $futuro = new DateTime('2020-02-27');
  
  $diff = $hoje->diff($futuro);
  
  echo "Diferença de: <br/>"
    .$diff->days . " dias <br/>"
    .$diff->m . " meses <br/>"
    .$diff->y . " anos <br/>"
    .$diff->h . " horas <br/>"
    .$diff->i . " minutos <br/>"
    .$diff->s . " segundos<br/>";
 ?>
O resultado aqui foi:
Diferença de:
363 dias
11 meses
0 anos
12 horas
28 minutos
28 segundos

Bem preciso esse PHP, não ?

Modificando Data e Hora: setDate() e setTime()

Após criar e definir seu objeto do tipo DateTime, é totalmente possível mudar seus atributos, como ano, dia, hora ou o que for, através dos setters.

Vamos definir a data atual e exibir ela:
$data = new DateTime();
echo $data->format( "d/m/Y H:i" )."<br />";

O resultado é: 28/02/2019 11:37 (sim, tá quase na hora do almoço)

Agora vamos mudar a data pra 01/03/2019, amanhã e o horário para 12:00.
Nosso código fica assim:
$data->setDate(2019,03,01);
$data->setTime(12,0,0);
echo $data->format( "d/m/Y H:i" )."<br />";

E o resultado assim: 01/03/2019 12:00

Bonitinho, não?

Comparando Datas: var_dump

Muitas vezes é preciso saber se uma data é igual a outra, se é anterior, posterior...
Vamos criar uma variável que representa hoje e outra amanhã:
  $hoje = new DateTime();
  $amanha = new DateTime('2019-03-01');

Vamos comparar se elas são iguais:
  var_dump($hoje == $amanha);

O resultado vai ser: bool(false)

Agora vamos comparar se amanhã é maior que hoje:
  var_dump($amanha > $hoje);

O resultado vai ser: bool(true)

Que bom que deu verdade, né?


É possível ainda trabalhar com fuso-horário, somar intervalos de tempo, subtrair, definir língua e local que vai usar e uma porção de outros métodos para você usar, para aprender mais, acesse a documentação oficial do PHP:

http://php.net/manual/pt_BR/class.datetime.php

Tipos de Dados em PHP - Inteiros, Float (decimal), Booleano, String, Array, Objeto e outros

Este conteúdo mudou de endereço. Redirecionando para: Clique aqui

Neste tutorial de nosso Curso de PHP, vamos aprender sobre os principais tipos de dados que iremos usar em nosso estudo de PHP: tipos numéricos (inteiros e float), tipo booleano, string, array, objeto etc. • Tipos numéricos: Inteiros e Flutuantes O tipo de dado mais conhecido e utilizado é, sem dúvidas, o tipo numérico. Ou seja, números. Computação vem de computar, que é o mesmo que contar. Computador, programas e scripts nada mais são que contas, muitas contas são feitas por trás dos panos e algumas outras pelo programador, através de seus scripts PHP. Vamos usar tipos numéricos do tipo inteiro: • Números positivos: 12345, 21, 12... • Números negativos: -12, -21, -100 • Número nulo: 0 Existe um tipo de número que é tratado diferente, são os float ou flutuantes, mais conhecidos como 'quebrados', são os que não são inteiros: • Números flutuantes (decimais): 12.12 ; 1.2 ; 4.5 ; 1.99 Note uma coisa importante: ao invés de vírgula (R$ 1,99), usamos ponto: R$ 1.99 É assim em toda a computação, ok? Cuidado para não confundir. • Tipo numérico octal (base 8): 02112 (começam por 0) • Tipo numérico hexadecimal (base 16): 0x2112A (começam por 0x) • Notação científica: 6.0e+23 (6 seguido de 23 zeros)• Tipo lógico: Booleano Certamente você já ouviu falar em código binário, que tudo em computação é 1 e 0. E é. Na verdade, é voltagem alta e voltagem baixa, que as entranhas de uma máquina entende. Outra maneira de entender isso, é com os valores booleanos. Só existem dois valores booleanos: TRUE (verdadeiro) FALSE (falso) Tudo que for 0, 0.0, string vazia, NULL, etc, é FALSE. Demais números e valores dos tipos, é TRUE. Esse conhecimento será muito importante na próxima seção, sobre testes condicionais, onde iremos avaliar se as coisas são verdadeiras ou falsas. ▪ Tipo String Já utilizamos e falamos das strings, que nada mais são que textos. • Pode ser um caractere: 'a', 'A', 'b' etc • Podem ser vários, uma palavra, uma frase, ou até um livro de tanto texto • Um número: '1', '2','3' etc • Caractere especial: "@", " ", "&" etc • Vazia: '' ou "" Veja bem: 1 - é número '1' - é string Strings é tudo que está entre aspas simples ou entre aspas duplas.▪ Outros Tipos de Dados • Array - um conjunto, um agrupamento de valores, organizados numericamente, que podem ser de tipos diferentes (inteiros, floats, array de strings etc). Teremos uma seção só para estudar arrays • Objeto - entidade que tem suas próprias definições, informações e maneiras de agir. Aprenderemos isso na seção de classes e objetos em PHP • Tipo recurso • Tipo misto • Tipo callback • Tipo NULL - Variável não possui valor nenhum, é NULL, nulo Não se estressde muito com esses outros tipos de dados, foi mais a título de informação, estudaremos eles detalhes no futoro, em nosso curso de PHP.

Veja também

O melhor PC para programar

O melhor celular para programar