要将 PHP DateTime 对象设置到过去,可以使用 modify()
方法。此方法接受一个字符串参数,指定要应用的修改。例如,要将日期对象回溯 10 天,可以使用以下代码:
$date = new DateTime();
$date->modify("-10 days");
穿越未来:将日期对象设置到未来
要将 PHP DateTime 对象设置到未来,可以使用 add()
方法。此方法接受一个 DateInterval 对象作为参数,指定要添加的时间量。例如,要将日期对象推进 10 天,可以使用以下代码:
$date = new DateTime();
$date->add(new DateInterval("P10D")); // 10 天
创建 DateInterval 对象
DateInterval 对象表示时间量。可以使用以下语法创建 DateInterval 对象:
$interval = new DateInterval([
"years" => $years,
"months" => $months,
"days" => $days,
"hours" => $hours,
"minutes" => $minutes,
"seconds" => $seconds,
]);
使用 DateTimeImmutable
DateTime 对象是可变的,这意味着修改它们会改变它们的状态。如果您不想更改日期对象,可以使用 DateTimeImmutable 类。DateTimeImmutable 对象是不可变的,这意味着修改它们会返回一个新的对象,而不会修改原始对象。
示例
以下是一个使用 PHP DateTime 扩展穿越时间线的示例:
// 创建一个日期对象
$date = new DateTime();
// 回溯 10 天
$date->modify("-10 days");
// 打印修改后的日期
echo $date->format("Y-m-d"); // 输出:2023-03-12
// 推进 10 天
$date->add(new DateInterval("P10D"));
// 打印修改后的日期
echo $date->format("Y-m-d"); // 输出:2023-03-22
注意事项
- PHP DateTime 扩展使用 UTC 时间。如果您需要使用本地时间,可以使用
DateTimeZone
类。 modify()
和add()
方法会更改日期对象的时区。如果您需要保持时区不变,可以使用setTimezone()
方法。- DateInterval 对象中的时间值可以为负数,从而允许您创建表示过去时间量的 DateInterval 对象。