2013-04-10 109 views
0

我试图改变显示的格式“d/M/Y”为这种格式“DMY”的日期,我写了下面的代码:日期操作无法正常工作

//Add $license years to today 
$today = date("j-m-Y"); 
$license = $row_customize['license']; 
$startdate = $row_customize['startdate']; 
list($d,$m,$Y) = explode('/',$startdate); 
$newstartDate = $d."-".$m."-".$Y; 
$enddate= date("j-m-Y", strtotime("$newstartDate +$license years")); 
echo $today; 
echo $enddate; 

$今天显示正确,但$ enddate在1970年例如1-01-1970显示我一个日期。

请问我做错了什么?

+0

也许不是你的问题,但如果你正在寻找一个明确的日期格式来格式化成,始终使用YMD,DMY不作为“2013年3月5日”是指“3月5日”,而不是“五月三日”中美国。 – IMSoP 2013-04-10 22:46:07

回答

0

我会把

$newstartDate = $d."-".$m."-".(intval($Y)+intval($license)); 
$enddate= date("j-m-Y", strtotime($newstartDate)); 

我觉得格式"<date> + n years"不允许的strtotime()

+0

仍可显示1970 – user2209076 2013-04-10 22:25:27

+0

可能是$ license,$ startDate和$ newStartDate的打印值。他们可以帮助您(和/或我们)了解发生了什么问题。 – p91paul 2013-04-10 22:37:56

+0

我印刷的价值,他们都出来正确的预期,除了$ enddate仍然保持1970年 – user2209076 2013-04-10 22:48:38

0

默认的日期为0,等同于01-01-1970。因此,$ newstartDate和$ license年份都为0,所以当加在一起时结果仍为0.所以问题是为什么将$ newstartDate和$ license设置为0.

我觉得像p91paul说你可能无法使用n年。我认为$ newstartDate可能是不受支持的格式。你可以在函数中使用$ startDate,然后执行格式更改吗?