IntlCalendar::fromDateTime

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

IntlCalendar::fromDateTimeCria um IntlCalendar a partir de um objeto DateTime ou uma string

Descrição

Estilo orientado a objetos

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

Estilo procedural

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

Cria um objeto IntlCalendar a partir de um objeto DateTime ou a partir de uma string da qual seja possível criar um objeto DateTime.

O novo calendário representará não somente o mesmo instante do DateTime informado (sujeito a perda de precisão para datas muito distantes no passado ou no futuro), mas também o mesmo fuso horário (sujeito à ressalva de que diferentes bancos de dados de fuso horário serão usados, e portanto os resultados podem ser diferentes).

Parâmetros

datetime

Um objeto DateTime ou uma string que possa ser passada a DateTime::__construct().

Valor Retornado

O objeto IntlCalendar criado ou null em caso de falha. Se uma string for informada, qualquer exceção que ocorrer dentro do construtor DateTime será propagada.

Exemplos

Exemplo #1 IntlCalendar::fromDateTime()

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

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

//Note que o fuso horário é Europe/Berlin, e não o padrão Europe/Lisbon
echo IntlDateFormatter::formatObject($cal1, 'yyyy MMMM d HH:mm:ss VVVV', 'de_DE'), "\n";

O exemplo acima produzirá:

2013 Februar 28 00:01:02 Deutschland Zeit

add a note add a note

User Contributed Notes 1 note

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