(PHP 5 >= 5.5.0, PHP 7, PECL >= 3.0.0a1)
IntlCalendar::set — Establecer un campo de instante o varios campos en común de una vez
Estilo orientado a objetos
$field
   , int $value
   ) : bool$year
   , int $month
   [, int $dayOfMonth = NULL
   [, int $hour = NULL
   [, int $minute = NULL
   [, int $second = NULL
  ]]]] ) : boolEstilo por procedimientos
$cal
   , int $year
   , int $month
   [, int $dayOfMonth = NULL
   [, int $hour = NULL
   [, int $minute = NULL
   [, int $second = NULL
  ]]]] ) : boolEstablece un campo al valor dado o varion campos en común de una vez. El rango de valores que se aceptan dependen de si el calendario está empleando el modo tolerante.
Para campos que entren en conflicto, los campos que se establezcan después tienen prioridad.
Este método no se puede invocar con exactamente cuatro argumentos.
calEl recurso IntlCalendar.
field
 Una de las constantes del campo
 fecha/hora de IntlCalendar. Son valores de tipo
 integer entre 0 y
 IntlCalendar::FIELD_COUNT.
valueEl nuevo valor para el campo dado.
year
      El nuevo valor para IntlCalendar::FIELD_YEAR.
     
month
      El nuevo valor para IntlCalendar::FIELD_MONTH.
     
dayOfMonth
      El nuevo valor para IntlCalendar::FIELD_DAY_OF_MONTH.
      La secuencia de meses empieza en cero, es decir, enero está representado por 0,
      febrero por 1, …, diciembre es 11 y undiciembre (si el calendario lo
      posee) es 12.
     
hour
       El nuevo valor para IntlCalendar::FIELD_HOUR_OF_DAY. 
     
minute
       El nuevo valor para IntlCalendar::FIELD_MINUTE.
      
second
       El nuevo valor para IntlCalendar::FIELD_SECOND.  
     
   Devuelve TRUE en caso de éxito, FALSE en caso de error.
  
Ejemplo #1 IntlCalendar::set()
<?php
ini_set('date.timezone', 'Europe/Lisbon');
ini_set('intl.default_locale', 'pt_PT');
// Las llamadas realizadas después tienen prioridad
$cal = new IntlGregorianCalendar(2013, 6 /* July */, 1);
$cal->set(IntlCalendar::FIELD_YEAR, 2012);
$cal->set(IntlCalendar::FIELD_EXTENDED_YEAR, 2011);
var_dump(IntlDateFormatter::formatObject($cal));
$cal = new IntlGregorianCalendar(2013, 6 /* July */, 1);
$cal->set(IntlCalendar::FIELD_YEAR, 2012);
$cal->set(IntlCalendar::FIELD_EXTENDED_YEAR, 2011);
// La hora aún no se ha recalculado. Si limpiamos el año ampliado,
// se empleará el año establecido antes
$cal->clear(IntlCalendar::FIELD_EXTENDED_YEAR);
var_dump(IntlDateFormatter::formatObject($cal));
El resultado del ejemplo sería:
string(20) "01/07/2011, 00:00:00" string(20) "01/07/2012, 00:00:00"