如何使用strtotime输出正确的日期?

问题描述:

我希望我的$ curdate每次点击按钮时添加2天。 但我总是得到输出“01-01-1970”如何使用strtotime输出正确的日期?

我总是得到那个输出。

这里是我的代码:

$curdate = date('m-d-Y'); 
$mydate=getdate(strtotime($curdate)); 
switch($mydate['wday']){ 
    case 0: // sun 
    case 1: // mon 
     $days = 2; 
     break; 
    case 2: 
     $days = 2; 
     break;  
    case 3: 
     $days = 2; 
     break; 
    case 4: 
     $days = 3; 
     break; 
    case 5: 
     $days = 4; 
     break; 
} 
echo date('m-d-Y', strtotime("$curdate +$days days")); 

我希望我的输出是今天日期加2天。

任何人都可以帮助我吗? 谢谢

$curdate = date('m-d-Y');将给出格式为-分隔符和日期前一个月的日期。

根据PHP's documented rules的strtotime()将识别日期与-分隔为英国/欧洲格式的日期,所以像01-15-2016的日期将是无效的

编辑

$curDate = new DateTime(); 
echo $curDate->add(new DateInterval('P2D'))->format('m-d-Y'); 

$ CURDATE

+0

什么是正确的代码是什么? – Adi

+0

正确的代码将停止字符串表示和UNIX时间戳之间的黑客攻击,并尽一切使用时间戳(甚至更好,datetime对象)和专用格式显示目的 –

+0

这里你的计算是针对 回声日期正确的代码('md-Y',strtotime(“+ $ days days”)); OMG! – Adi

strtotime的第一个参数是文本字符串,从现在开始有一些日期更改(没有第二个参数),例如:

echo date('m-d-Y', strtotime("+6 days")); // add six days to now date 

所以你不需要使用$cur_date变量是:

echo date('m-d-Y', strtotime("+$days days")); 
+0

它的工作。谢谢你(y) – Adi

+0

如果答案解决了你的问题(它似乎已经完成了),那么你应该接受给定的答案 – RamRaider