2016-11-03 42 views
-1

我想添加兩個星期到SQL結果,作爲16/11/2016返回。當我做類似的事情添加兩週php

$twoweeks = strtotime($time_db); 

$expiry_date = $twoweeks; 
$date = strtotime($expiry_date); 
$date = strtotime("+14 day", $date); 
echo date('d/m/y', $date); 

我不斷收到15/01/70 ...任何想法?

+0

你15/01/1970究其原因,是因爲你增加了兩個星期的時間開始,或者更確切地說UNIX時代。某處你的時間戳被分配爲0. – Progrock

+0

現在你有很多答案,試試吧 – devpro

+1

你需要養成[接受答案]的習慣(http://meta.stackexchange.com/questions/5234/how-does-接受答案的工作),它可以幫助你解決你的問題。您將獲得積分,其他人將被鼓勵幫助您。 –

回答

2

您通過將一些變量的strtotime第一參數取得第4行是錯誤的。 strtotime需要一個有效日期/時間格式的字符串作爲第一個參數,否則返回FALSE。

如何,我認爲你的代碼應該是:

$twoweeks = strtotime($time_db); 
$date = strtotime("+ 2 weeks", $twoweeks); 
echo date('d/m/y', $date); 

或甚至:

echo date('d/m/y', strtotime($time_db . ' + 2 weeks')); 
1

您可以使用

$numberOfWeeks = 2; 

$newTime = strtotime($time_db) + ($numberOfWeeks * 60 * 60 * 24 * 7); 

,或者你可以在(MySQL的)直接做選擇

select date_add(your_column, INTERVAL 2 WEEK) from my_table; 
+0

我還在15/01/1970。 1970年從哪裏來? – user3080562

+0

你是uisng php或mysql? ..和$ time_db是一個日期或字符串? ..你獲得1/1/1970因爲你time_db不是一個有效的日期,然後加2周你得到15/1/1970 – scaisEdge

2

這裏發生的事情是,你是16/11/2016日 - 月 - 年和斜槓是一個問題。

如果你的日期是2016年11月16日,你會發現它會是好的。

您需要將這些轉換/替換爲破折號/連字符。

$time_db = "16/11/2016"; 
$time_db = str_replace('/', '-', $time_db); 

$two_weeks_later = date('d-m-Y',strtotime($time_db . "+14 days")); 
// or display as Year-month-day 
// $two_weeks_later = date('Y-m-d',strtotime($time_db . "+14 days")); 

echo $two_weeks_later; 

當日期(和時間)的工作,最好使用內置的MySQL日期/時間的功能,而不是將它們保存爲純文本格式;在查詢時,它的麻煩小得多,而且更容易。

參考:

1
$date = date('Y-m-d H:i:s',time()); 
    $date = strtotime($date); 
    $date = strtotime("+14 day", $date); 
    $valuedate= date('Y-m-d H:i:s',$date); 

試試這個