Класс DateInterval

(PHP 5 >= 5.3.0)

Введение

Представление интервалов дат.

Интервалы дат хранятся либо определенном фиксированном времени (в годах, месяцах, днях, часах и т.д.) или относительной строке времени, формат который поддерживает DateTime конструктор.

Обзор классов

DateInterval {
/* Свойства */
public integer $y ;
public integer $m ;
public integer $d ;
public integer $h ;
public integer $i ;
public integer $s ;
public integer $invert ;
public mixed $days ;
/* Методы */
public __construct ( string $interval_spec )
public static DateInterval createFromDateString ( string $time )
public string format ( string $format )
}

Свойства

y

Количество лет.

m

Количество месяцев.

d

Количество дней.

h

Количество часов.

i

Количество минут.

s

Количество секунд.

invert

Принимает 1, если интервал представляет отрицательный период времени и 0 в противном случае. См. DateInterval::format().

days

Если объект DateInterval создан методом DateTime::diff(), то это суммрное число дней между начальной и конечной датами. В противном случае days примет значение FALSE.

Содержание

Коментарии

Many people have commented on doing a reverse interval on a date time.  I personally find a backwards year to be a little strange to think about and instead opt to work with just intervals.  This is the easiest I have found.

<?php
$one_year 
= new DateInterval('P1Y');
$one_year_ago = new DateTime();
$one_year_ago->sub($one_year);
?>

Instead of:

<?php
$one_year_ago 
= new DateInterval"P1Y" );
$one_year_ago->invert 1;
$one_year_ago = new DateTime();
$one_year_ago->add($one_year);
?>
2020-04-27 22:37:01
http://php5.kiev.ua/manual/ru/class.dateinterval.html
Автор:
If you want to reverse a date interval use array_reverse and iterator_to_array. I've found using invert to be unreliable.

<?php
$start_date 
date_create("2021-01-01");
$end_date   date_create("2021-01-05"); // If you want to include this date, add 1 day

$interval DateInterval::createFromDateString('1 day');
$daterange = new DatePeriod($start_date$interval ,$end_date);

function 
show_dates ($dr) {
    foreach(
$dr as $date1){
        echo 
$date1->format('Y-m-d').'<br>';
    }
}
 
show_dates ($daterange);
   
echo 
'<br>';

// reverse the array

$daterange array_reverse(iterator_to_array($daterange));

show_dates ($daterange);
           
?>

Gives 
 2021-01-01
 2021-01-02
 2021-01-03
 2021-01-04

 2021-01-04
 2021-01-03
 2021-01-02
 2021-01-01
2022-12-04 06:12:17
http://php5.kiev.ua/manual/ru/class.dateinterval.html
More simple example i use to add or subtract.

<?php
$Datetime 
= new Datetime('NOW', new DateTimeZone('America/Bahia'));
$Datetime->add(DateInterval::createFromDateString('2 day'));

echo 
$Datetime->format("Y-m-d H:i:s");
?>
2024-01-18 17:56:00
http://php5.kiev.ua/manual/ru/class.dateinterval.html

    Поддержать сайт на родительском проекте КГБ