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::fromDateTimeСоздаёт объект IntlCalendar из объекта DateTime или строки

Описание

Объектно-ориентированный стиль

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

Процедурный стиль

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

Метод создаёт объект IntlCalendar либо из объекта DateTime, либо из строки, из которой возможно создать объект DateTime.

Новый календарь представит тот же момент времени, который представляет объект DateTime, с возможной потерей точности для дат, для которых недостаточно исторических данных, или дат за пределами диапазона точного представления времени, и тот же часовой пояс с возможным расхождением в системах с разными базами данных часовых поясов.

Список параметров

datetime

Объект DateTime или строка (string, которую возможно передать в метод DateTime::__construct().

Возвращаемые значения

Функция возвращает объект IntlCalendar или значение null, если возникла ошибка. При передаче в первый параметр значения string каждое исключение, которое возникнет внутри конструктора класса DateTime, всплывает по стеку вызовов.

Примеры

Пример #1 Пример создания календаря из даты и времени методом IntlCalendar::fromDateTime()

<?php

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

// Присваивание аналогично вызову IntlCalendar::fromDateTime(new DateTime(...))
$cal1 = IntlCalendar::fromDateTime('2013-02-28 00:01:02 Europe/Berlin', 'de_DE');

// Обратите внимание, что для календаря указали часовой пояс Europe/Berlin,
// а не Europe/Lisbon, который установили как пояс по умолчанию
echo IntlDateFormatter::formatObject($cal1, 'yyyy MMMM d HH:mm:ss VVVV', 'de_DE'), "\n";

?>

Результат выполнения приведённого примера:

2013 Februar 28 00:01:02 Deutschland Zeit

Добавить

Примечания пользователей 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