DateTimeImmutable::__construct

date_create_immutable

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

DateTimeImmutable::__construct -- date_create_immutableВозвращает новый объект DateTimeImmutable

Описание

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

public DateTimeImmutable::__construct(string $datetime = "now", ?DateTimeZone $timezone = null)

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

date_create_immutable(string $datetime = "now", ?DateTimeZone $timezone = null): DateTimeImmutable|false

Возвращает новый объект DateTimeImmutable.

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

datetime

Строка даты/времени. Объяснение корректных форматов дано в разделе Форматы даты и времени.

Укажите "now" для получения текущего времени при использовании параметра timezone.

timezone

Объект DateTimeZone, представляющий часовой пояс параметра datetime.

Если параметр timezone опущен или равен null, будет использоваться текущий часовой пояс.

Замечание:

Параметр timezone и текущий часовой пояс игнорируются, если параметр datetime либо является временной меткой UNIX (например, @946684800), либо указан часовой пояс (например, 2010-01-28T15:00:00+02:00 или 2010-07-05T06:00:00Z).

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

Возвращает новый экземпляр DateTimeImmutable. Процедурный стиль возвращает false в случае возникновения ошибки.

Ошибки

Выбрасывает Exception в случае возникновения ошибки.

Список изменений

Версия Описание
7.1.0 Отныне микросекунды заполняются фактическим значением. Не '00000'.

Примеры

Пример #1 Пример использования DateTimeImmutable::__construct()

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

<?php
try {
    
$date = new DateTimeImmutable('2000-01-01');
} catch (
Exception $e) {
    echo 
$e->getMessage();
    exit(
1);
}

echo 
$date->format('Y-m-d');
?>

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

<?php
$date 
date_create('2000-01-01');
if (!
$date) {
    
$e date_get_last_errors();
    foreach (
$e['errors'] as $error) {
        echo 
"$error\n";
    }
    exit(
1);
}

echo 
date_format($date'Y-m-d');
?>

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

2000-01-01

Пример #2 Тонкости DateTimeImmutable::__construct()

<?php
// Указанная дата/время в часовом поясе вашего компьютера.
$date = new DateTimeImmutable('2000-01-01');
echo 
$date->format('Y-m-d H:i:sP') . "\n";

// Указанная дата/время в указанном часовом поясе.
$date = new DateTimeImmutable('2000-01-01', new DateTimeZone('Pacific/Nauru'));
echo 
$date->format('Y-m-d H:i:sP') . "\n";

// Текущая дата/время в часовом поясе вашего компьютера.
$date = new DateTimeImmutable();
echo 
$date->format('Y-m-d H:i:sP') . "\n";

// Текущая дата/время в указанном часовом поясе.
$date = new DateTimeImmutable(null, new DateTimeZone('Pacific/Nauru'));
echo 
$date->format('Y-m-d H:i:sP') . "\n";

// Использование временной метки UNIX. Обратите внимание, что результат в часовом поясе UTC.
$date = new DateTimeImmutable('@946684800');
echo 
$date->format('Y-m-d H:i:sP') . "\n";

// Несуществующие значения переворачиваются.
$date = new DateTimeImmutable('2000-02-30');
echo 
$date->format('Y-m-d H:i:sP') . "\n";
?>

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

2000-01-01 00:00:00-05:00
2000-01-01 00:00:00+12:00
2010-04-24 10:24:16-04:00
2010-04-25 02:24:16+12:00
2000-01-01 00:00:00+00:00
2000-03-01 00:00:00-05:00

Пример #3 Изменение связанного часового пояса

<?php
$timeZone 
= new \DateTimeZone('Asia/Tokyo');

$time = new \DateTimeImmutable();
$time $time->setTimezone($timeZone);

echo 
$time->format('Y/m/d H:i:s'), "\n";
?>

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

2022/08/12 23:49:23

Пример #4 Использование относительной строки даты/времени

<?php
$time 
= new \DateTimeImmutable("-1 year");

echo 
$time->format('Y/m/d H:i:s'), "\n";
?>

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

2021/08/12 15:43:51
add a note add a note

User Contributed Notes 1 note

up
0
wangbuying at gmail dot com
2 years ago
As the type of the first parameter is string, we can assign a relative date for it.
Example:

<?php
$immutable
= new DateTimeImmutable('-1 year', new DateTimeZone('Asia/ShangHai'));
echo
$immutable->format('Y-m-d H:i:s');
?>

It looks like the parameter of function strtotime and is very helpful for us to get an immutable relative DateTime object.
To Top