PHP date_interval_create_from_date_string()函数
定义和用法
date_interval_create_from_date_string() 函数是DateInterval::createFromDateString()的别名。它接受一个指定时间间隔的字符串,并返回一个DateInterval对象。
语法
date_interval_create_from_date_string($time)
参数
序号 | 参数与描述 |
---|---|
1 | $time(必填) 这是一个字符串值,用于指定相对格式中您想要输出的日期字符串的日期/间隔。 |
返回值
PHP date_interval_create_from_date_string() 返回一个表示给定时间间隔的DateInterval对象。
PHP版本
此函数首次引入于PHP版本5.3,并且与所有后续版本兼容。
示例
以下示例演示了date_interval_create_from_date_string()函数的用法。
<?php
time = "3year + 3months + 26 day + 12 hours+ 30 minutes +23 seconds";interval = date_interval_create_from_date_string(time);
print_r(interval);
?>
这将产生以下结果−
DateInterval Object
(
[y] => 3
[m] => 3
[d] => 26
[h] => 12
[i] => 30
[s] => 23
[f] => 0
[weekday] => 0
[weekday_behavior] => 0
[first_last_day_of] => 0
[invert] => 0
[days] =>
[special_type] => 0
[special_amount] => 0
[have_weekday_relative] => 0
[have_special_relative] => 0
)
在这个函数中,你不能使用” P12M “这样的 ISO8601 字符串来解析这样的间隔,你需要使用 DateInterval 构造函数。
示例
在下面的示例中,我们使用 ISO8601 字符串符号来创建一个间隔 –
<?php
time1 = new DateInterval('P25DP8MP9Y');
print_r(time1);
time2 = new DateInterval('PT10H');
print_r(time2);
?>
这将产生以下结果 –
DateInterval Object
(
[y] => 9
[m] => 8
[d] => 25
[h] => 0
[i] => 0
[s] => 0
[f] => 0
[weekday] => 0
[weekday_behavior] => 0
[first_last_day_of] => 0
[invert] => 0
[days] =>
[special_type] => 0
[special_amount] => 0
[have_weekday_relative] => 0
[have_special_relative] => 0
)
DateInterval Object
(
[y] => 0
[m] => 0
[d] => 0
[h] => 10
[i] => 0
[s] => 0
[f] => 0
[weekday] => 0
[weekday_behavior] => 0
[first_last_day_of] => 0
[invert] => 0
[days] =>
[special_type] => 0
[special_amount] => 0
[have_weekday_relative] => 0
[have_special_relative] => 0
)
示例
以下示例将一个时间间隔添加到当前日期并打印结果。这里我们使用了 date_interval_create_from_date_string 函数来计算时间间隔。−
<?php
date = date_create();str = "12year 3months 14days";
interval = date_interval_create_from_date_string(str);
res1 = date_add(date, interval); print("Date after ".str);
print(": ".date_format($res1, 'Y-m-d'));
?>
这将产生以下结果−
Date after 12year 3months 14days: 2032-08-28
示例
以下示例使用各种ISO8601字符串和它们的相应正常字符串创建日期间隔 –
<?php
print(new DateInterval('P12D')."\n");
print(DateInterval::createFromDateString('12 day')."\n");
print(new DateInterval('P7')."\n");
print(DateInterval::createFromDateString('7 months')."\n");
print(new DateInterval('P12Y')."\n");
print(DateInterval::createFromDateString('12 years')."\n");
print(new DateInterval('PT9H')."\n");
print(DateInterval::createFromDateString('9 hours')."\n");
print(new DateInterval('PT19i')."\n");
print(DateInterval::createFromDateString('19 minutes')."\n");
print(new DateInterval('PT45S')."\n");
print(DateInterval::createFromDateString('45 seconds')."\n");
?>