2013-10-04 156 views
0

即時通訊使用mktime做一些事情,我需要添加30天以上的下一個日期,但它返回我1970-01-30日期,什麼即時通訊做錯了?PHP mktime()返回錯誤的日期

$strtime=strtotime("2013-10-04"); 
$fecha=date("Y-m-d",$strtime); 
echo $fecha."<br />"; 
$nueva_fecha=mktime(0,0,0,date("n",$fecha),date("j",$fecha)+30,date("Y",$fecha)); 
echo date("Y-m-d",$nueva_fecha)."<br />"; 

結果:

2013年10月4日

1970年1月30日

+0

它必須是mktime嗎? – magicianiam

+0

還有別的辦法嗎?我只需要總共30天,並得到新的日期。 –

+0

僅供參考,但在mktime調用中,我得到了這個警告3x:注意:在第6行的date.php中遇到了一個非格式正確的數值 –

回答

2

日期正在查找時間戳,因爲它是第二個參數,而不是表示此值的字符串值。更新爲將其傳遞給$ strtime。

$strtime=strtotime("2013-10-04"); 
$fecha=date("Y-m-d",$strtime); // <-- Unnecessary unless you want to echo the value. 
echo $fecha."<br />"; 
$nueva_fecha=mktime(0,0,0,date("n",$strtime),date("j",$strtime)+30,date("Y",$strtime)); 
echo date("Y-m-d",$nueva_fecha)."<br />"; 

輸出:

2013年10月4日

2013年11月3日

1

如果你已經擁有的strtotime,爲什麼加上date?相反,你可能已經使用+(30天秒)或簡單的功能,他們爲您提供+ 1 day檢查答案:adding one day to a date

strtotime('2013-10-04 + 30 days');

這將打印2013-11-03date('Y-m-d', strtotime('2013-10-04 + 30 days'))

1

你可以試試這個:

echo strtotime(「+ 1 day」),「\ n」;回覆strtotime(「+ 30 day」,strtotime(date('D,d M Y'))),「\ n」;

這將在當前日期添加30天。

也strtotime是非常有用的,你可以使用它每週,每月和每年。

2

你可以使用下面的函數30天添加到你約會存放在:

$date = strtotime("2013-10-04"); 
$new_date = strtotime("+30 days", $date); 

或者乾脆當前日期:

$new_date = strototime("+30 days", time()); 
0

您可以使用此也

<?php 

$date  = date("Y/m/d"); // example date in yyyy/mm/dd format 
$unix_time = strtotime($date); // covert date to unix time 

$sec_in_30_days = 60 * 60 * 24 * 30; // 60 seconds * 60 minutes * 24 hours * 30 days 

$new_unix_time = $unix_time + $sec_in_30_days; // add 30 days to unix time 
$date_in_30_days = date('Y/m/d', $new_unix_time); // convert new unix time to date 

// Output results: 
echo 'original current date: ' . $date . '<br />'; 
echo '<br />'; 
echo 'new date: ' . $date_in_30_days . '<br />'; 

?> 

輸出將被

原來的當前日期:2013年10月4日

新日期: 2013/11/03