PHP 8.5.0 Alpha 1 available for testing

IntlCalendar::fromDateTime

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

IntlCalendar::fromDateTimeCrear un IntlCalendar desde un objeto DateTime o una cadena de caracteres

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

Crear un objeto IntlCalendar desde un objeto DateTime o desde una cadena de caracteres que puede ser utilizada para construir un objeto DateTime.

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

Parámetros

datetime

Un objeto DateTime o una string que puede ser pasado a DateTime::__construct().

Valores devueltos

El objeto IntlCalendar creado o null en caso de fallo. Si una string es pasada, cualquier excepción que ocurra dentro del constructor DateTime es propagada.

Ejemplos

Ejemplo #1 IntlCalendar::fromDateTime()

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

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

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

2013 Februar 28 00:01:02 Deutschland Zeit

add a note

User Contributed Notes 1 note

up
2
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