date_modify()

1. 定义

该函数传入一个值,用以改变DateTime对象的值。 返回修改后的DateTime对象。

2. 语法

public DateTime::modify ( string $modify ) : DateTime

date_modify ( DateTime $object , string $modify ) : DateTime

3. 参数说明

参数 可选性 数据类型 描述
$object 必需 DateTime DateTime时间对象
$modify 必需 字符串 日期时间字符串

4. 示例

<?php

// date_modify()
// 传入一个值,用以改变`DateTime`对象的值

// 面向对象式
$date = new DateTime('2019-08-31 18:00:00');
$modify = '24 hours';
$date->modify($modify);
var_dump($date);
/* 输出:
object(DateTime)#1 (3) {
  ["date"]=>
  string(26) "2019-09-01 18:00:00.000000"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(13) "Asia/Shanghai"
}
*/

// 面向过程式
$date = date_create('2019-08-31 18:00:00');
$modify = '24 hours';
date_modify($date, $modify);
var_dump($date);
/* 输出:
object(DateTime)#2 (3) {
  ["date"]=>
  string(26) "2019-09-01 18:00:00.000000"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(13) "Asia/Shanghai"
}
*/

// 更多示例:符合语义化的英文说明
$modify = '2018-09-28 19:00';
date_modify($date, $modify);
var_dump($date);
/* 输出:
object(DateTime)#2 (3) {
  ["date"]=>
  string(26) "2018-09-28 19:00:00.000000"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(13) "Asia/Shanghai"
}
*/

$modify = '2 days';
date_modify($date, $modify);
var_dump($date);
/* 输出:
object(DateTime)#2 (3) {
  ["date"]=>
  string(26) "2018-09-30 19:00:00.000000"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(13) "Asia/Shanghai"
}
*/

$modify = '+2 days';
date_modify($date, $modify);
var_dump($date);
/* 输出:
object(DateTime)#2 (3) {
  ["date"]=>
  string(26) "2018-10-02 19:00:00.000000"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(13) "Asia/Shanghai"
}
*/

$modify = '-2 days';
date_modify($date, $modify);
var_dump($date);
/* 输出:
object(DateTime)#2 (3) {
  ["date"]=>
  string(26) "2018-09-30 19:00:00.000000"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(13) "Asia/Shanghai"
}
*/

$modify = 'last day of July';
date_modify($date, $modify);
var_dump($date);
/* 输出:
object(DateTime)#2 (3) {
  ["date"]=>
  string(26) "2018-07-31 19:00:00.000000"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(13) "Asia/Shanghai"
}
*/

5. 延展阅读

  • strtotime():将一个描述日期时间的字符串解析为 Unix 时间戳
  • date_add():对一个DateTime对象增加一定量的年、月、日、时、分、秒等时间间隔
  • date_sub():对指定DateTime对象减少一定量的年、月、日、时、分、秒等时间间隔
  • date_date_set():设置DateTime对象的日期
  • date_isodate_set():以ISO 8601规范的格式(以周和日作为日期参考, 而不是月和日)设置日期
  • date_time_set():设置DateTime对象的时间
  • date_timestamp_set():以 UNIX 时间戳的形式设置日期时间对象