php - 如何在 php 中使用日期变量和 date_add()?
问题描述
我有一个$date
变量,我喜欢将他的值复制到$date1
. 问题是当我修改 $date1 值时date_add()
,$date 的值也被修改了。
如何只修改$date1
值?
<?php
$date=date_create("2013-03-15");
echo "date =>" . date_format($date,"Y-m-d");
echo " ******** ";
$date1=$date;
date_add($date1,date_interval_create_from_date_string("40 days"));
echo "date after modify date1 =>" . date_format($date,"Y-m-d");
?>
解决方案
在 PHP 中对象是通过引用传递的。因此,当您将对象分配给新变量时,两个变量都引用同一个对象。为避免这种情况,您需要clone
第一个对象:
$date1 = clone $date;
你的代码:
$date=date_create("2013-03-15");
echo "date =>" . date_format($date,"Y-m-d");
echo " ******** ";
$date1= clone $date;
date_add($date1,date_interval_create_from_date_string("40 days"));
echo "date after modify date1 =>" . date_format($date1,"Y-m-d");
您也可以通过使用DateTimeImmutable()
which 在修改时返回一个新DateTimeImmutable
对象来避免这种情况,因此不需要克隆:
$date = new DateTimeImmutable("2013-03-15");
echo "date =>" . $date->format("Y-m-d");
echo " ******** ";
$date1 = $date->add(date_interval_create_from_date_string("40 days"));
echo "date after modify date1 =>" . $date1->format("Y-m-d");
推荐阅读
- excel - 将工作簿链接更改为新工作簿 VBA [Excel]
- r - 尽管singular.ok = FALSE,lm() 报告结果,而solve(t(X) %*% X) %*% (t(X) %*% y) 报告(正确)错误
- awk - awk 解决方案,用于按列搜索任何字符的第一个实例(但一个!)
- flutter - 如何在 Flutter 中将页面移动到另一个页面
- bash - 为什么jq输出的是字符串而不是数组?
- css - 汉堡菜单(3 行)未出现在全尺寸屏幕中
- sql - 根据另一个表中的最大值对列求和
- terraform - 查找函数返回 - 给定键未标识此集合值中的元素
- google-chrome - ChromeDriver 更新后启动 CLI 应用程序时接收 (Errno::ECONNREFUSED) 和 (Net::ReadTimeout)
- r - Cron 在通过 bash 脚本运行 Rscript 时遇到问题