IntlCalendar::fieldDifference

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)

IntlCalendar::fieldDifferenceCalcula a diferença entre o horário fornecido e o horário deste objeto

Descrição

Estilo orientado a objetos

public IntlCalendar::fieldDifference(float $timestamp, int $field): int|false

Estilo procedural

intlcal_field_difference(IntlCalendar $calendar, float $timestamp, int $field): int|false

RCalcula a diferença entre o horário fornecido e o horário definido para este objeto, com respeito à quantidade especificada pelo parâmetro field.

Este método foi projetado para ser chamado sucessivamente, primeiro com o campo de interesse mais significativo até o menos significativo. Para isto, como efeito colateral, o valor do campo para este calendário é avançado na quantidade retornada.

Parâmetros

calendar

Uma instância de IntlCalendar.

timestamp

O horário com o qual a quantidade representada pelo field será comparada. Para que o resultado seja positivo, o horário informado para este parâmetro deve ser posterior ao do objeto em que este método está sendo chamado.

field

O campos que representa a quantidade sendo comparada.

Uma das constantes de campo de data/horário da classe IntlCalendar. São valores inteiros entre 0 e IntlCalendar::FIELD_COUNT.

Valor Retornado

Retorna uma diferença (com sinal) de tempo na unidade associada com o campo especificado ou false em caso de falha.

Exemplos

Example #1 IntlCalendar::fieldDifference()

<?php
ini_set('date.timezone', 'Europe/Lisbon');
ini_set('intl.default_locale', 'fr_FR');

$cal1 = IntlCalendar::fromDateTime('2012-02-29 09:00:11');
$cal2 = IntlCalendar::fromDateTime('2013-03-01 09:19:29');
$time = $cal2->getTime();

echo "Horário antes: ", IntlDateFormatter::formatObject($cal1), "\n";

printf(
    "A diferença de tempo é de %d ano(s), %d mês(es), "
  . "%d dia(s), %d hora(s) e %d minutos(s)\n",
    $cal1->fieldDifference($time, IntlCalendar::FIELD_YEAR),
    $cal1->fieldDifference($time, IntlCalendar::FIELD_MONTH),
    $cal1->fieldDifference($time, IntlCalendar::FIELD_DAY_OF_MONTH),
    $cal1->fieldDifference($time, IntlCalendar::FIELD_HOUR_OF_DAY),
    $cal1->fieldDifference($time, IntlCalendar::FIELD_MINUTE)
);

//agora o objeto avançou para o tempo alvo, exteto pelos segundos,
//para os quais não foram medidas as diferenças
echo "Horário depois: ", IntlDateFormatter::formatObject($cal1), "\n";

O exemplo acima produzirá:

Horário antes: 29 févr. 2012 09:00:11
A diferença de tempo é de 1 ano(s), 0 mês(es), 1 dia(s), 0 hora(s) e 19 minutos(s)
Horário depois: 1 mars 2013 09:19:11