A classe PHP DateInterval calcula a diferença entre dois objetos de data/hora. Às vezes, é necessário encontrar a diferença entre dois dias, meses, anos, horas, minutos e segundos para fins de programação. O objeto desta classe armazena a quantidade fixa de tempo que pode ser lida usando a função format () usando diferentes parâmetros de formato. Diferentes usos da classe DateInterval no PHP são mostrados neste tutorial.
Diferentes parâmetros de formato do formato () função
Os propósitos de diferentes caracteres de formato usados na função format () foram descritos nesta parte do tutorial.
Caráter formato | Propósito |
%d | Imprime o dia da data sem liderar zero Exemplo: 1, 2, 30, etc. |
%D | Imprime o dia da data com um zero líder Exemplo: 2, 05, 30, etc. |
%m | Imprime o número do mês da data sem um zero líder Exemplo: 1, 6, 12, etc. |
%M | Imprime o número do mês da data com um zero líder Exemplo: 01, 06, 12, etc. |
%y | Imprime o ano de 2 dígitos Exemplo: 21, 22, 23, etc. |
%Y | Imprime o ano de 4 dígitos Exemplo: 2021, 2022, 2023, etc. |
%h | Imprime a hora sem liderar zero Exemplo: 1, 5, 11, etc. |
%H | Imprime a hora com zero liderando Exemplo: 01, 05, 11, etc. |
%eu | Imprime o minuto sem liderar zero Exemplo: 1, 9, 59, etc. |
%EU | Imprime o minuto com zero líder Exemplo: 01, 05, 25, etc. |
%s | Imprime o segundo sem liderar zero Exemplo: 1, 9, 59, etc. |
%S | Imprime o segundo com zero líder Exemplo: 01, 09, 59, etc. |
%f | Imprime o microssegundo sem liderar zero Exemplo: 7845, 562312, 235634, etc. |
%F | Imprime o microssegundo com 6 dígitos e liderando zero Exemplo: 007845, 062312, 235634, etc. |
Os usos de diferentes métodos de classe DateInterval são discutidos na próxima parte deste tutorial.
Exemplo 1: Uso da classe DateInterval para o dia, mês e ano
Crie um arquivo PHP com o seguinte script que mostra o uso da definição de diferentes valores de intervalo usando a classe DateInterval. O intervalo deve começar com o personagem, 'P'. O personagem 'y' é usado para intervalo de ano, 'm' é usado para intervalo de mês e 'd' é usado para intervalo diário. No script, a primeira classe DATEInterval definirá intervalos de 10 dias, a segunda classe DateInterval definirá 5 meses e 10 dias de intervalos e a terceira classe DateInterval definirá 2 anos, 5 meses e 10 dias de intervalos.
// Defina o intervalo em dias
$ IVAL = new DateInterval ('P10D');
// Imprima o valor do intervalo
eco "o intervalo é", $ IVAL-> formato ('%d dias.')."
";
// Defina o intervalo em meses e dias
$ IVAL = new DateInterval ('P5M10D');
// Imprima o valor do intervalo em meses e dias
eco "o intervalo é", $ IVAL-> formato (' %m meses e %d dias.'), "
";
// Defina o intervalo em anos, meses e dias
$ IVAL = new DateInterval ('P2Y5M10D');
// Imprima o valor do intervalo em anos, meses e dias com os principais zeros
eco "o intervalo é", $ IVAL-> formato (' %y anos, %m meses e %d dias.'), "
";
// imprime o valor do intervalo em anos, meses e dias sem liderar zeros
eco "o intervalo é", $ IVAL-> formato (' %y anos, %m meses e %d dias.'), "
";
?>
A saída a seguir aparecerá após a execução do script anterior:
Exemplo 2: Uso da classe DateInterval com date_interval_format () função
A função date_interval_format () imprime o valor do intervalo de data com a sequência de formatação. Esta função leva o objeto de intervalo no primeiro argumento e a sequência do formato no segundo argumento. Crie um arquivo php com o seguinte script em que foi mostrado o uso da função date_interval_format ():
// Defina o intervalo em anos, meses e dias
$ IVAL = new DateInterval ('P10Y6M15D');
// Defina o formato para dias
$ format = "%d";
// Imprima o valor do intervalo em dias
eco "o intervalo é".DATE_INTERVAL_FORMAT ($ IVAL, $ formato)." dias.
";
// Defina o formato por dias e meses
$ formato = " %m meses e %dias.";
// Imprima o valor do intervalo em meses e dias
eco "o intervalo é".DATE_INTERVAL_FORMAT ($ IVAL, $ formato)."
";
// Defina o formato para dias
$ formato = " %y anos, %m meses e %dias.";
// Imprima o valor do intervalo em anos, meses e dias
eco "o intervalo é".DATE_INTERVAL_FORMAT ($ IVAL, $ formato)."
";
?>
A saída a seguir aparecerá após a execução do script anterior:
Exemplo 3: Uso da classe DateInterval para a hora, minuto e segundo
O personagem 'T' é usado após o personagem 'P' para definir o intervalo no tempo. Crie um arquivo PHP com o seguinte script em que o intervalo de tempo é definido usando a classe DateInterval:
// Defina o intervalo em segundos
$ IVAL = new DateInterval ('PT30s');
// Defina a formatação
$ format = "%s segundos.";
// imprima o valor do intervalo em segundos
eco "o intervalo é". DATE_INTERVAL_FORMAT ($ IVAL, $ formato). "
";
// Defina o intervalo em segundos
$ IVAL = new DateInterval ('PT15M30S');
// Defina a formatação
$ format = " %i minutos e %s segundos.";
// Imprima o valor do intervalo em minutos e segundos
eco "o intervalo é". DATE_INTERVAL_FORMAT ($ IVAL, $ formato). "
";
// Defina o intervalo em segundos
$ IVAL = new DateInterval ('PT5H15M30S');
// Defina a formatação
$ format = " %h horas, %i minutos e %s segundos.";
// Imprima o valor do intervalo em horas, minutos e segundos
eco "o intervalo é". DATE_INTERVAL_FORMAT ($ IVAL, $ formato). "
";
?>
A saída a seguir aparecerá após a execução do script anterior:
Exemplo 4: Uso da classe DateInterval com a função createfromDateString ()
A função createfromDateString () é usada para definir o intervalo de data e hora de diferentes maneiras. Crie um arquivo PHP com o seguinte script, onde o intervalo de data e hora foi definido de várias maneiras usando a função createfromDateString ():
// Defina o intervalo em dias
$ IVAL = DATEInterval :: createFromDateString ('20 dias ');
eco "o intervalo é", $ IVAL-> formato ('%d dias'), "
";
// Defina o intervalo em semanas
$ IVAL = DATEInterval :: createFromDateString ('4 semanas');
eco "o intervalo é", $ IVAL-> formato ('%d dias'), "
";
// Defina o intervalo em meses
$ IVAL = DATEInterval :: createFromDateString ('3 meses');
eco "o intervalo é", $ IVAL-> formato ('%m meses'), "
";
// Defina o intervalo em anos e dias
$ IVAL = DATEInterval :: CreateFromDateString ('5 anos + 15 dias');
eco "o intervalo é", $ IVAL-> formato (' %y anos %d dias'), "
";
// Defina o intervalo em semanas, dias, horas e minutos por soma
$ IVAL = DATEInterval :: createFromDateString ('2 semanas + 15 dias + 24 horas + 60 minutos');
eco "o intervalo é", $ IVAL-> formato (' %d dias, %h horas e %em minutos'), "
";
// Defina o intervalo em dias por subtração
$ IVAL = DATEINTVAL :: createFromDateString ('30 dias - 15 dias ');
eco "o intervalo é", $ IVAL-> formato ('%d dias'), "
";
?>
A saída a seguir aparecerá após a execução do script anterior:
Conclusão
As diferentes maneiras de definir o intervalo de data e hora usando o valor da string no momento da criação do objeto da classe DateInterval ou usando CreateFromDateString () foram mostradas neste tutorial. Os usos da classe DateInterval foram discutidos para os novos usuários de PHP entenderem melhor.