CakeFest 2024: The Official CakePHP Conference

IntlCalendar::fromDateTime

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a2)

IntlCalendar::fromDateTimeCrear un IntlCalendar desde un objeto DateTime o tring

Descripción

Estilo orientado a objetos

public static IntlCalendar::fromDateTime(mixed $dateTime): IntlCalendar

Estilo por procedimientos

intlcal_from_date_time(mixed $dateTime): IntlCalendar

Crear un objeto IntlCalendar desde un objeto DateTime o desde un string desde el cual se pueda construir un objeto DateTime.

El nuevo calendario representara no sólo el mismo instante que el DateTime dado (sujeto a la pérdida de preceisión para fechas muy lejanas en el pasado o futuro), sino también la misma zona horaria (sujeta a la advertencia de que se emplearán diferentes bases de datos de zonas horarias, por lo que los resultados podrían diferir).

Parámetros

dateTime

Un objeto DateTime o un string que pueda proporcianrse a DateTime::__construct().

Valores devueltos

El objeto IntlCalendar creado o null en caso de error. Si se proporciona un string, cualquier excepción que ocurra dentro del constructor de DateTime se propagará.

Ejemplos

Ejemplo #1 IntlCalendar::fromDateTime()

<?php
ini_set
('date.timezone', 'Europe/Lisbon');

// lo mismo que IntlCalendar::fromDateTime(new DateTime(...))
$cal1 = IntlCalendar::fromDateTime('2013-02-28 00:01:02 Europe/Berlin');

// Observe que la zona horaria es Europe/Berlin, no la predeterminada Europe/Lisbon
echo IntlDateFormatter::formatObject($cal1, 'yyyy MMMM d HH:mm:ss VVVV', 'de_DE'), "\n";

El resultado del ejemplo sería:

2013 Februar 28 00:01:02 Deutschland Zeit

add a note

User Contributed Notes 1 note

up
2
SenseException
10 years ago
Don't forget that fromDateTime() doesn't set any locale and that the default one will be set. In my case it was en_US_POSIX.

If you wan't to create a IntlCalendar object containing the values of a DateTime object with your locale, use createInstance() instead and do a

<?php
$intlCalendar
->setTime($dateTime->getTimestamp() * 1000);
?>

IntlCalendar works with milliseconds so you need to multiply the timestamp with 1000.

Using fromDateTime() can cause unwanted behaviour like getFirstDayOfWeek() returning a wrong integer.
To Top