PHP 8.5.0 Beta 2 available for testing

IntlCalendar::fromDateTime

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

IntlCalendar::fromDateTimeCrea un IntlCalendar a partir de un objeto DateTime o string

Descripción

Estilo orientado a objetos

public static IntlCalendar::fromDateTime(DateTime|string $datetime, ?string $locale = null): ?IntlCalendar

Estilo procedimental

intlcal_from_date_time(DateTime|string $datetime, ?string $locale = null): ?IntlCalendar

Crea un objeto IntlCalendar ya sea a partir de un objeto DateTime o a partir de un string del cual se puede construir un objeto DateTime.

El nuevo calendario representará no solo el mismo instante que el DateTime dado (sujeto a pérdida de precisión para fechas muy lejanas en el pasado o futuro), sino también la misma zona horaria (sujeto a la salvedad de que se usarán diferentes bases de datos de zonas horarias, y por lo tanto los resultados pueden diferir).

Parámetros

datetime

Un objeto DateTime o un string que puede pasarse a DateTime::__construct().

Valores devueltos

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

Ejemplos

Ejemplo #1 IntlCalendar::fromDateTime()

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

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

//Nota: 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 ejemplo anterior mostrará :

2013 Februar 28 00:01:02 Deutschland Zeit

add a note

User Contributed Notes 1 note

up
1
SenseException
11 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