-1

我的任务是拆分从数据库中获取的日期并找到 8 年后的日期。

我的尝试在这里-

变量:

$doo = $info['s_doo']; // 2013-05-01
$validity = $info['s_validity']; // 8

试试 1

$str="+".$validity." year";
echo date("d / m / Y",strtotime($str,$doo)); // Does not work

试试 2

$str="+".($validity*12)." month";
echo date("d / m / Y",strtotime($str,$doo)); // Does not work

尝试 3

$str="+".($validity*52)." week";
echo date("d / m / Y",strtotime($str,$doo)); // Works but Wrong result

最后

list($y, $m, $d) = split('-',$doo); // Line 107

$str = ($y+$validity)."-".$m."-".$d;
echo date("d / m / Y",strtotime($str)); // 01 / 05 / 2021

输出代表:

已弃用:函数 split() 在 D:\****\accinfo.php 第 107
01 / 05 / 2021行已弃用

如果它生成正确的输出,为什么会显示错误消息?我不知道弃用消息的用途。我也尝试使用数组而不是列表和拆分函数,如 -split('-',$doo,10); split('-',$info['s_doo'],10); split('[-]',$doo);等等......

我需要一个好方法来完成这项任务。谢谢。

4

4 回答 4

3

请改用DateTime

// input date (Y-m-d ?)
$doo = '2013-05-01';

// 8 years ?
$validity = new \DateInterval('P8Y');

// convert input date to DateTime object and add validity
$doo = \DateTime::createFromFormat('Y-m-d', $doo);
$doo->add($validity);   
print $doo->format('d/m/Y');
于 2013-05-01T16:12:32.163 回答
2

弃用意味着 PHP 语言将在未来停止对该函数的支持。它将从该语言的未来版本中删除,因此如果您现在有一个工作代码,并且您将来升级您的 PHP,您的代码将会中断,因为它在这个新版本中不可用。每个不推荐使用的功能都会被一个新的更好的功能所取代。找到那个并用新的替换你的函数。

为了通知用户,即使相关函数在当前 PHP 版本中有效,PHP 也会显示弃用消息。

于 2013-05-01T16:06:55.367 回答
1

split()功能已弃用。您应该使用explode('-',$doo)which 将字符串拆分为一个数组。

于 2013-05-01T16:06:11.400 回答
1

如前所述,此处 split()已弃用。

像这样使用explode()

list($y, $m, $d) = explode( '-' , $doo );
于 2013-05-01T16:06:19.787 回答