IntlDateFormatter::create

datefmt_create

IntlDateFormatter::__construct

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

IntlDateFormatter::create -- datefmt_create -- IntlDateFormatter::__constructCrée un formateur de date

Description

Style orienté objet

public static IntlDateFormatter::create(
    string|null $locale,
    int $dateType,
    int $timeType,
    IntlTimeZone|DateTimeZone|string|null $timezone = null,
    IntlCalendar|int|null $calendar = null,
    string $pattern = ""
): IntlDateFormatter|null

Style orienté objet (constructeur)

public IntlDateFormatter::__construct(string|null $locale, int $dateType, int $timeType, IntlTimeZone|DateTimeZone|string|null $timezone = null, IntlCalendar|int|null $calendar = null, string $pattern = "")

Style procédural

datefmt_create(
    string|null $locale,
    int $dateType,
    int $timeType,
    IntlTimeZone|DateTimeZone|string|null $timezone = null,
    IntlCalendar|int|null $calendar = null,
    string $pattern = ""
): IntlDateFormatter|null

Crée un formateur de date.

Liste de paramètres

locale

La locale à utiliser pour formater et analyser ou null pour utiliser la valeur spécifiée dans la configuration ini intl.default_locale.

dateType

Le type de date à utiliser (none, short, medium, long, full). C'est l'une des constantes IntlDateFormatter. Il peut aussi valoir null, auquel cas, le type de date par défaut d'ICU sera utilisé.

timeType

Le type d'heure à utiliser (none, short, medium, long, full). C'est l'une des constantes IntlDateFormatter. Il peut aussi valoir null, auquel cas, le type d'heure par défaut d'ICU sera utilisé.

timezone

L'identifiant du fuseau horaire. Par défaut, (ce sera également la valeur par défaut qui sera utilisée si null est fourni) ce sera celui retourné par la fonction date_default_timezone_get() ou, si applicable, celui de l'objet IntlCalendar passé au paramètre calendar.Cet identifiant doit être un identifiant valide dans la base de données ICU, ou un identifiant représentant une possible explicite, comme GMT-05:30.

Ce paramètre peut aussi être un objet IntlTimeZone ou un objet DateTimeZone.

calendar

Calendrier à utiliser pour le formatage ou l'analyse. La valeur par défaut est null, ce qui correspond à la constante IntlDateFormatter::GREGORIAN. Peut être une des constantes de calendrier IntlDateFormatter ou un IntlCalendar. Tout objet IntlCalendar passé sera clôné ; il ne sera pas modifié par IntlDateFormatter. Il déterminera le type de calendrier utilisé (grégorien, islamique, persien, etc.) et si null est fourni dans le paramètre timezone, le fuseau horaire sera également utilisé.

pattern

Le modèle à utiliser pour le formatage ou l'analyse. Les modèles disponibles sont documentés sur » https://unicode-org.github.io/icu/userguide/format_parse/datetime/.

Valeurs de retour

L'objet IntlDateFormatter créé, ou null si une erreur survient.

Historique

Version Description
5.5.0/PECL 3.0.0

Un objet IntlCalendar est autorisé comme paramètre calendar.

Des objects de type IntlTimeZone et de type DateTimeZone sont autorisés comme paramètre timezone.

Les identifiants de fuseaux horaires invalides (incluant les chaînes vides) ne sont plus autorisés comme paramètre timezone.

Si null est fourni dans le paramètre timezone, l'identifiant du fuseau horaire fourni par le paramètre date_default_timezone_get() sera utilisé au lieu du fuseau horaire par défaut d'ICU.

Exemples

Exemple #1 Exemple avec datefmt_create(), procédural

<?php
$fmt 
datefmt_create"en_US" ,IntlDateFormatter::FULLIntlDateFormatter::FULL,
    
'America/Los_Angeles'IntlDateFormatter::GREGORIAN  );
echo 
"Le premier format affiché est ".datefmt_format$fmt 0);
$fmt datefmt_create"de-DE" ,IntlDateFormatter::FULLIntlDateFormatter::FULL,
    
'America/Los_Angeles',IntlDateFormatter::GREGORIAN  );
echo 
"Le deuxième format affiché est  ".datefmt_format$fmt 0);

$fmt datefmt_create"en_US" ,IntlDateFormatter::FULLIntlDateFormatter::FULL,
     
'America/Los_Angeles',IntlDateFormatter::GREGORIAN  ,"MM/dd/yyyy");
echo 
"Le premier format est affiché avec le modèle : ".datefmt_format$fmt 0);
$fmt datefmt_create"de-DE" ,IntlDateFormatter::FULLIntlDateFormatter::FULL,
     
'America/Los_Angeles',IntlDateFormatter::GREGORIAN  ,"MM/dd/yyyy");
echo 
"Le deuxième format est affiché avec le modèle : ".datefmt_format$fmt 0);
?>

Exemple #2 Exemple avec datefmt_create(), POO

<?php
$fmt 
= new IntlDateFormatter"en_US" ,IntlDateFormatter::FULLIntlDateFormatter::FULL,
    
'America/Los_Angeles',IntlDateFormatter::GREGORIAN  );
echo 
"Le premier format affiché est ".$fmt->format(0);
$fmt = new IntlDateFormatter"de-DE" ,IntlDateFormatter::FULLIntlDateFormatter::FULL
    
'America/Los_Angeles',IntlDateFormatter::GREGORIAN  );
echo 
"Le deuxième format affiché est ".$fmt->format(0);

$fmt = new IntlDateFormatter"en_US" ,IntlDateFormatter::FULLIntlDateFormatter::FULL
     
'America/Los_Angeles',IntlDateFormatter::GREGORIAN  ,"MM/dd/yyyy");
echo 
"Le premier format est affiché avec le modèle : ".$fmt->format(0);
$fmt = new IntlDateFormatter"de-DE" ,IntlDateFormatter::FULLIntlDateFormatter::FULL,
      
'America/Los_Angeles',IntlDateFormatter::GREGORIAN "MM/dd/yyyy");
echo 
"Le deuxième format est affiché avec le modèle : ".$fmt->format(0);
?>

L'exemple ci-dessus va afficher :

Le premier format affiché est Wednesday, December 31, 1969 4:00:00 PM PT
Le deuxième format affiché est Mittwoch, 31. Dezember 1969 16:00 Uhr GMT-08:00
Le premier format est affiché avec le modèle : 12/31/1969
Le deuxième format est affiché avec le modèle : 12/31/1969
         

Voir aussi

add a note add a note

User Contributed Notes 3 notes

up
3
mikko dot rantalainen at peda dot net
12 years ago
Documentation says "timezone: Time zone ID, default is system default."

The "system default" really means only the "TZ" environment variable on Unix/Linux systems. It does not mean PHP ini setting or value set via date_default_timezone_set() or the OS default time zone in file "/etc/timezone".
up
3
daniel dot rhodes at warpasylum dot co dot uk
12 years ago
It should be noted that the locale string passed into IntlDateFormatter's constructor supports UCA keywords. So you can, for example, do things like this to output the year as a Japanese era year:

<?php
$now
= new DateTime();    //DateTime is a core PHP class as of version 5.2.0

$formatter = new IntlDateFormatter('ja_JP', IntlDateFormatter::FULL,
       
IntlDateFormatter::FULL, 'Asia/Tokyo', IntlDateFormatter::GREGORIAN);

echo
'It is now: "' . $formatter->format($now) . '" in Tokyo' . "\n";
//above gives [It is now: "2011年8月19日金曜日 23時32分27秒JST" in Tokyo]

$formatter = new IntlDateFormatter('ja_JP@calendar=japanese', IntlDateFormatter::FULL,
       
IntlDateFormatter::FULL, 'Asia/Tokyo', IntlDateFormatter::TRADITIONAL);

echo
'It is now: "' . $formatter->format($now) . '" in Tokyo' . "\n";
//above gives [It is now: "平成23年8月19日金曜日 23時32分27秒JST" in Tokyo]
?>
up
1
Anonymous
5 years ago
The documentation says that $datetype and $timetype can also be NULL,  in which case ICUʼs default date type or time type will be used.

But when declare (strict_types=1); is also set, Intl fails to create the IntlDateFormatter class, and it returns an error "datefmt_create: unable to parse input parameters".
To Top