The IntlDateFormatter class

- « IntlTimeZone::useDaylightTime

- IntlDateFormatter::create »

- PHP Manual
- intl
- The IntlDateFormatter class

# The IntlDateFormatter class

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

## Introduction

Date Formatter is a concrete class that enables locale-dependent formatting/parsing of dates using pattern strings and/or canned patterns.

This class represents the ICU date formatting functionality. It allows users to display dates in a localized format or to parse strings into PHP date values using pattern strings and/or canned patterns.

## Class synopsis

class IntlDateFormatter {
/* Constants */
public const int FULL;
public const int LONG;
public const int MEDIUM;
public const int SHORT;
public const int NONE;
public const int RELATIVE_FULL;
public const int RELATIVE_LONG;
public const int RELATIVE_MEDIUM;
public const int RELATIVE_SHORT;
public const int GREGORIAN;
public const int TRADITIONAL;
/* Methods */
public __construct(
?string `$locale`,
int `$dateType` = IntlDateFormatter::FULL,
int `$timeType` = IntlDateFormatter::FULL,
IntlTimeZone|DateTimeZone|string|null `$timezone` = `null`,
IntlCalendar|int|null `$calendar` = `null`,
?string `$pattern` = `null`
)
public static create(
?string `$locale`,
int `$dateType` = IntlDateFormatter::FULL,
int `$timeType` = IntlDateFormatter::FULL,
IntlTimeZone|DateTimeZone|string|null `$timezone` = `null`,
IntlCalendar|int|null `$calendar` = `null`,
?string `$pattern` = `null`
): ?IntlDateFormatter
public format(IntlCalendar|DateTimeInterface|array|string|int|float `$datetime`): string|false
public static formatObject(IntlCalendar|DateTimeInterface `$datetime`, array|int|string|null `$format` = `null`, ?string `$locale` = `null`): string|false
public getCalendar(): int|false
public getDateType(): int|false
public getErrorCode(): int
public getErrorMessage(): string
public getLocale(int `$type` = `ULOC_ACTUAL_LOCALE`): string|false
public getPattern(): string|false
public getTimeType(): int|false
public getTimeZoneId(): string|false
public getCalendarObject(): IntlCalendar|false|null
public getTimeZone(): IntlTimeZone|false
public isLenient(): bool
public localtime(string `$string`, int `&$offset` = `null`): array|false
public parse(string `$string`, int `&$offset` = `null`): int|float|false
public setCalendar(IntlCalendar|int|null `$calendar`): bool
public setLenient(bool `$lenient`): void
public setPattern(string `$pattern`): bool
public setTimeZone(IntlTimeZone|DateTimeZone|string|null `$timezone`): ?bool
}

## See Also

- » ICU Date formatter

- » ICU Date formats

## Predefined Constants

These constants are used to specify different formats in the constructor for DateType and TimeType.

`IntlDateFormatter::NONE`
  Do not include this element
`IntlDateFormatter::FULL`
  Completely specified style (Tuesday, April 12, 1952 AD or 3:30:42pm PST)
`IntlDateFormatter::LONG`
  Long style (January 12, 1952 or 3:30:32pm)
`IntlDateFormatter::MEDIUM`
  Medium style (Jan 12, 1952)
`IntlDateFormatter::SHORT`
  Most abbreviated style, only essential data (12/13/52 or 3:30pm)
`IntlDateFormatter::RELATIVE_FULL`
  The same as `IntlDateFormatter::FULL`, but yesterday, today, and tomorrow show as `yesterday`, `today`, and `tomorrow`, respectively. Available as of PHP 8.0.0, for `dateType` only.
`IntlDateFormatter::RELATIVE_LONG`
  The same as `IntlDateFormatter::LONG`, but yesterday, today, and tomorrow show as `yesterday`, `today`, and `tomorrow`, respectively. Available as of PHP 8.0.0, for `dateType` only.
`IntlDateFormatter::RELATIVE_MEDIUM`
  The same as `IntlDateFormatter::MEDIUM`, but yesterday, today, and tomorrow show as `yesterday`, `today`, and `tomorrow`, respectively. Available as of PHP 8.0.0, for `dateType` only.
`IntlDateFormatter::RELATIVE_SHORT`
  The same as `IntlDateFormatter::SHORT`, but yesterday, today, and tomorrow show as `yesterday`, `today`, and `tomorrow`, respectively. Available as of PHP 8.0.0, for `dateType` only.

The following int constants are used to specify the calendar. These calendars are all based directly on the Gregorian calendar. Non-Gregorian calendars need to be specified in locale. Examples might include locale="hi@calendar=BUDDHIST".

`IntlDateFormatter::TRADITIONAL`
  Non-Gregorian Calendar
`IntlDateFormatter::GREGORIAN`
  Gregorian Calendar

## Table of Contents

- IntlDateFormatter::create — Create a date formatter
- IntlDateFormatter::format — Format the date/time value as a string
- IntlDateFormatter::formatObject — Formats an object
- IntlDateFormatter::getCalendar — Get the calendar type used for the IntlDateFormatter
- IntlDateFormatter::getDateType — Get the datetype used for the IntlDateFormatter
- IntlDateFormatter::getErrorCode — Get the error code from last operation
- IntlDateFormatter::getErrorMessage — Get the error text from the last operation
- IntlDateFormatter::getLocale — Get the locale used by formatter
- IntlDateFormatter::getPattern — Get the pattern used for the IntlDateFormatter
- IntlDateFormatter::getTimeType — Get the timetype used for the IntlDateFormatter
- IntlDateFormatter::getTimeZoneId — Get the timezone-id used for the IntlDateFormatter
- IntlDateFormatter::getCalendarObject — Get copy of formatterʼs calendar object
- IntlDateFormatter::getTimeZone — Get formatterʼs timezone
- IntlDateFormatter::isLenient — Get the lenient used for the IntlDateFormatter
- IntlDateFormatter::localtime — Parse string to a field-based time value
- IntlDateFormatter::parse — Parse string to a timestamp value
- IntlDateFormatter::setCalendar — Sets the calendar type used by the formatter
- IntlDateFormatter::setLenient — Set the leniency of the parser
- IntlDateFormatter::setPattern — Set the pattern used for the IntlDateFormatter
- IntlDateFormatter::setTimeZone — Sets formatterʼs timezone