The date_create_immutable() is an alias of DateTimeImmutable::__construct(). This function accepts a date/time string and a time zone as parameters (optional) an creates a DateTimeImmutable object.
Unlike DateTime object, this object does not allows any modifications, it creates a new object in case of changes and returns it. By default, this function creates an object of the current date/time
date_create_immutable([$date_time, $timezone]);
Sr.No | Parameter & Description |
---|---|
1 |
date_time (Optional) This is the date/time string (in supported formats) for which you need to create an immutable DateTime object. |
2 |
timezone (Optional) This represents the timezone of the given time. |
PHP date_create_immutable() function returns the created DateTimeImmutable object.
This function was first introduced in PHP Version 5.5.0 and, works with all the later versions.
Following example demonstrates the usage of the date_create_immutable() function −
<?php $date_string = "2019-08-15 9:25:45"; $immutable = date_create_immutable($date_string); print_r($immutable); ?>
This will produce following result −
DateTimeImmutable Object ( [date] => 2019-08-15 09:25:45.000000 [timezone_type] => 3 [timezone] => UTC )
Following is an example of date_create_immutable() with timezone parameter −
<?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')); ?>
This will produce following result −
DateTimeImmutable Object ( [date] => 2019-08-15 09:25:45.000000 [timezone_type] => 3 [timezone] => Indian/Mahe ) 2019-08-15 09:25:45
In the following example we have created a immutable date and normal date objects added intervals to them and displayed the resultant values. Since immutable DateTime object creates and returns a new object in case of an attemt to change, you cans observe that its vary before and after change −
<?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"); ?>
This will produce following result −
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