PHP - 在用户定义的日期添加一周

jar*_*old 10 html php

对于这个问题,很可能会有重复,但我很难为我的问题找到一个精确的答案.

用户输入客户租金的开始日期(在前一页的表格上),然后需要生成客户需要支付的下一个日期(一周后).例如:

$start_date = $_POST['start_date'];  
$date_to_pay = ???  
Run Code Online (Sandbox Code Playgroud)

让我们说用户在2015/03/02进入:

$start_date = "2015/03/02";  
Run Code Online (Sandbox Code Playgroud)

然后,我希望支付的日期等于一周后(2015/03/09):

$date_to_pay = "2015/03/09";  
Run Code Online (Sandbox Code Playgroud)

怎么会这样做呢?非常感谢.

pri*_*786 16

你可以试试这个

$start_date = "2015/03/02";  
$date = strtotime($start_date);
$date = strtotime("+7 day", $date);
echo date('Y/m/d', $date);
Run Code Online (Sandbox Code Playgroud)

  • 应该注意,这是一种非常糟糕的方法,`strtotime` 返回自纪元以来的秒数,您可以简单地将一周以秒为单位添加到时间上,并避免对 `strtotime` 的额外缓慢调用。`$date = strtotime($start_date) + 604800;` (3认同)

Mih*_*att 9

请尝试以下方法:

date('d.m.Y', strtotime('+1 week', $start_date));
Run Code Online (Sandbox Code Playgroud)


Ant*_*ony 5

使用DateTime类的面向对象样式:

$start_date = DateTime::createFromFormat('Y/m/d', $_POST['start_date']);

$one_week = DateInterval::createFromDateString('1 week');

$start_date->add($one_week);

$date_to_pay = $start_date->format('Y/m/d');
Run Code Online (Sandbox Code Playgroud)

或者对于那些喜欢一气呵成的人:

$date_to_pay = DateTime::createFromFormat('Y/m/d',$_POST['start_date'])
                       ->add(DateInterval::createFromDateString('1 week'))
                       ->format('Y/m/d');
Run Code Online (Sandbox Code Playgroud)