(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)
IntlDateFormatter::setCalendar -- datefmt_set_calendar — Establecer el tipo de calendario usado por el formateador
Estilo orientado a objetos
Estilo por procedimientos
Establece el calendario o el tipo de calendario usado por el formateador.
fmtEl recurso del formatedor
which
       Puede ser: el tipo de
       calendario a usar (el predeterminado es
       IntlDateFormatter::GREGORIAN, el cual también se usa si
       se especifica NULL) o un
       objeto IntlCalendar.
      
Cualquier objeto IntlCalendar pasado será clonado; no se realizará ninguna modificación al objeto del argumento.
La zona horaria del formateador se mantendrá únicamente si no se pasa un objeto IntlCalendar, de otro modo la nuevo zona horaria será aquella del objeto pasado.
   Devuelve TRUE en caso de éxito o FALSE en caso de error.
  
| Versión | Descripción | 
|---|---|
| 5.5.0/PECL 3.0.0 | Ahora es posible pasar un objeto IntlCalendar. | 
Ejemplo #1 Ejemplo de datefmt_set_calendar()
<?php
$fmt = datefmt_create(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'El calendario del formateador es : ' . datefmt_get_calendar($fmt);
datefmt_set_calendar($fmt,IntlDateFormatter::TRADITIONAL);
echo 'Ahora el calendario del formateador es : ' . datefmt_get_calendar($fmt);
?>
Ejemplo #2 Ejemplo orientado a objetos
<?php
$fmt = new IntlDateFormatter(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN  
);
echo 'El calendario del formateador es : ' . $fmt->getCalendar();
$fmt->setCalendar(IntlDateFormatter::TRADITIONAL);
echo 'Ahora el calendario del formateador es : ' . $fmt->getCalendar();
?>
El resultado del ejemplo sería:
El calendario del formateador es : 1 Ahora el calendario del formateador es : 0
Ejemplo #3 Ejemplo con el argumento IntlCalendar
<?php
$time = strtotime("2013-03-03 00:00:00 UTC");
$formatter = IntlDateFormatter::create("en_US", NULL, NULL, "Europe/Amsterdam");
echo "antes:   ", $formatter->format($time), "\n";
/* note that the calendar's locale is not used! */
$formatter->setCalendar(IntlCalendar::createInstance(
               "America/New_York", "pt_PT@calendar=islamic"));
echo "después: ", $formatter->format($time), "\n";
El resultado del ejemplo sería:
antes: Sunday, March 3, 2013 at 1:00:00 AM Central European Standard Time después: Saturday, Rabiʻ II 20, 1434 at 7:00:00 PM Eastern Standard Time