PHP date_create_immutable() 函数
定义和用法
date_create_immutable() 是 DateTimeImmutable::__construct() 的一个别名。此函数接受一个日期/时间字符串和一个时区作为参数(可选),并创建一个 DateTimeImmutable 对象。
与 DateTime 对象不同,该对象不允许进行任何修改,它在发生更改时创建一个新对象并返回。默认情况下,此函数创建一个当前日期/时间的对象。
语法
date_create_immutable([date_time,timezone]);
参数
序号 | 参数与描述 |
---|---|
1 | date_time (可选) 这是一个日期/时间字符串(支持的格式),用于创建一个不可变的 DateTime 对象。 |
2 | timezone (可选) 这表示给定时间的时区。 |
返回值
PHP date_create_immutable()函数返回创建的DateTimeImmutable对象。
PHP版本
此函数首次在PHP版本5.5.0中引入,并与所有后续版本一起使用。
示例
以下示例演示了date_create_immutable()函数的使用方法-
<?php
date_string = "2019-08-15 9:25:45";immutable = date_create_immutable(date_string); print_r(immutable);
?>
这将产生以下结果−
DateTimeImmutable Object
(
[date] => 2019-08-15 09:25:45.000000
[timezone_type] => 3
[timezone] => UTC
)
示例
以下是使用时区参数的date_create_immutable()的示例 –
<?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'));
?>
这将产生以下结果−
DateTimeImmutable Object
(
[date] => 2019-08-15 09:25:45.000000
[timezone_type] => 3
[timezone] => Indian/Mahe
)
2019-08-15 09:25:45
示例
在下面的示例中,我们创建了一个不可变的日期和一个普通的日期对象,为它们添加了时间间隔,并显示了结果值。由于不可变的DateTime对象在尝试更改时创建并返回一个新对象,您可以观察到它变化前后的差异 –
<?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");
?>
以下为具体结果:
这将产生以下结果 –
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