(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)
IntlDateFormatter::setCalendar -- datefmt_set_calendar — Définit le type de calendrier utilisé par le formateur
Style orienté objet
Style procédural
Configure le calendrier ou le type de calendrier à utiliser par le formateur.
formatterLa ressource de formateur IntlDateFormatter.
calendar
       Peut être : le type de
       calendrier à utiliser (par défaut,
       IntlDateFormatter::GREGORIAN, qui est
       aussi utilisé si null est spécifié) ou un objet
       IntlCalendar.
      
Tout objet IntlCalendar passé sera cloné ; aucune modification ne sera effectuée sur l'objet en argument.
Le décalage horaire du formateur ne sera conservé que si un objet IntlCalendar n'est pas passé, sinon, le nouveau décalage horaire sera celui de l'objet passé.
   Cette fonction retourne true en cas de succès ou false si une erreur survient.
  
| Version | Description | 
|---|---|
| 5.5.0/PECL 3.0.0 | Il devient possible de passer un objet IntlCalendar. | 
Exemple #1 Exemple avec datefmt_set_calendar()
<?php
$fmt = datefmt_create(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'Le calendrier du formateur est : ' . datefmt_get_calendar($fmt);
datefmt_set_calendar($fmt, IntlDateFormatter::TRADITIONAL);
echo 'Le calendrier est maintenant : ' . datefmt_get_calendar($fmt);
?>
Exemple #2 Exemple orienté objet
<?php
$fmt = new IntlDateFormatter(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN  
);
echo 'Le calendrier du formateur est : ' . $fmt->getCalendar();
$fmt->setCalendar(IntlDateFormatter::TRADITIONAL);
echo 'Le calendrier est maintenant : ' . $fmt->getCalendar();
?>
L'exemple ci-dessus va afficher :
Le calendrier du formateur est : 1 Le calendrier est maintenant : 0
Exemple #3 Exemple avec des arguments à IntlCalendar
<?php
$time = strtotime("2013-03-03 00:00:00 UTC");
$formatter = IntlDateFormatter::create("en_US", NULL, NULL, "Europe/Amsterdam");
echo "avant : ", $formatter->format($time), "\n";
/* notez que la locale du calendrier n'est pas utilisée ! */
$formatter->setCalendar(IntlCalendar::createInstance(
               "America/New_York", "pt_PT@calendar=islamic"));
echo "après :  ", $formatter->format($time), "\n";
L'exemple ci-dessus va afficher :
avant : Sunday, March 3, 2013 at 1:00:00 AM Central European Standard Time après : Saturday, Rabiʻ II 20, 1434 at 7:00:00 PM Eastern Standard Time