Função PHP date_create_immutable ()

Definição e Uso

O date_create_immutable () é um alias de DateTimeImmutable :: __ construct () . Esta função aceita uma string de data / hora e um fuso horário como parâmetros (opcional) e cria um objeto DateTimeImmutable .

Ao contrário do objeto DateTime, este objeto não permite modificações, ele cria um novo objeto em caso de modificações e o retorna. Por padrão, esta função cria um objeto da data / hora atual

Sintaxe

date_create_immutable([$date_time, $timezone]);

Parâmetros

Sr. Não Parâmetro e Descrição
1

date_time (Optional)

Esta é a string de data / hora (em formatos suportados) para a qual você precisa criar um objeto DateTime imutável.

2

timezone (Optional)

Isso representa o fuso horário do horário determinado.

Valores Retornados

A função PHP date_create_immutable () retorna o objeto DateTimeImmutable criado.

Versão PHP

Esta função foi introduzida pela primeira vez no PHP versão 5.5.0 e funciona com todas as versões posteriores.

Exemplo

O exemplo a seguir demonstra o uso da função date_create_immutable () -

<?php
   $date_string = "2019-08-15 9:25:45";
   $immutable = date_create_immutable($date_string);   
   print_r($immutable);
?>

Isso produzirá o seguinte resultado -

DateTimeImmutable Object
(
    [date] => 2019-08-15 09:25:45.000000
    [timezone_type] => 3
    [timezone] => UTC
)

Exemplo

A seguir está um exemplo de date_create_immutable () com o parâmetro de fuso horário -

<?php
   $date_string = "2019-08-15 9:25:45";
   $tz = new DateTimeZone('Indian/Mahe');
   $immutable = date_create_immutable($date_string, $tz);   
   print_r($immutable);   
   print( date_format($immutable,'Y-m-d H:i:s')); 
?>

Isso produzirá o seguinte resultado -

DateTimeImmutable Object
(
    [date] => 2019-08-15 09:25:45.000000
    [timezone_type] => 3
    [timezone] => Indian/Mahe
)
2019-08-15 09:25:45

Exemplo

No exemplo a seguir, criamos uma data imutável e objetos de data normais adicionaram intervalos a eles e exibimos os valores resultantes. Uma vez que o objeto DateTime imutável cria e retorna um novo objeto no caso de uma tentativa de alteração, você pode observar que ele varia antes e depois da alteração -

<?php
   print("Immutable Date: "."\n");
   $date1 = date_create_immutable('1986-09-11');
   $date2 = $date1->add(new DateInterval('P15DP12MP9YT24H'));
   print("Original Object Value: ".$date1->format('Y-m-d')."\n");
   print("After Change: ".$date2->format('Y-m-d')."\n");
   print("Normal Date: "."\n");
   $date3 = date_create('1986-09-11');
   $date4 = $date3->add(new DateInterval('P15DP12MP9YT24H'));
   print("Original Object Value: ".$date3->format('Y-m-d')."\n");
   print("After Change: ".$date4->format('Y-m-d')."\n");
?>

Isso produzirá o seguinte resultado -

Immutable Date:
Original Object Value: 1986-09-11
After Change: 1996-09-27
Normal Date:
Original Object Value: 1996-09-27
After Change: 1996-09-27