# The DateInterval class

&reftitle.intro;

Represents a date interval.

A date interval stores either a fixed amount of time (in years, months, days, hours etc) or a relative time string in the format that `DateTimeImmutable`'s and `DateTime`'s constructors support.

More specifically, the information in an object of the `DateInterval` class is an instruction to get from one date/time to another date/time. This process is not always reversible.

A common way to create a `DateInterval` object is by calculating the difference between two date/time objects through `DateTimeInterface::diff`.

Since there is no well defined way to compare date intervals, `DateInterval` instances are incomparable.

&reftitle.classsynopsis;

         DateInterval

        &Properties;

         public
         int
         y

         public
         int
         m

         public
         int
         d

         public
         int
         h

         public
         int
         i

         public
         int
         s

         public
         float
         f

         public
         int
         invert

         public
         mixed
         days

         public
         bool
         from_string

         public
         string
         date_string

        &Methods;

&reftitle.properties;

The available properties listed below depend on PHP version, and should be considered as readonly.

`y`

- Number of years.

`m`

- Number of months.

`d`

- Number of days.

`h`

- Number of hours.

`i`

- Number of minutes.

`s`

- Number of seconds.

`f`

- Number of microseconds, as a fraction of a second.

`invert`

- Is `1` if the interval represents a negative time period and `0` otherwise. See `DateInterval::format`.

`days`

- If the DateInterval object was created by `DateTimeImmutable::diff` or `DateTime::diff`, then this is the total number of full days between the start and end dates. Otherwise, `days` will be &false;.

`from_string`

- If the DateInterval object was created by `DateInterval::createFromDateString`, then this property's value will be &true;, and the `date_string` property will be populated. Otherwise, the value will be &false;, and the `y` to `f`, `invert`, and `days` properties will be populated.

`date_string`

- The string used as argument to `DateInterval::createFromDateString`.

&reftitle.changelog;

&Version; | &Description;
8.2.0 | The `from_string` and `date_string` properties were added for `DateInterval` instances that were created using the `DateInterval::createFromDateString` method.
8.2.0 | Only the `y` to `f`, `invert`, and `days` will be visible.
7.4.0 | `DateInterval` instances are incomparable now; previously, all `DateInterval` instances were considered equal.
7.1.0 | The `f` property was added.

&reference.datetime.entities.dateinterval;