2015-03-02 286 views
4

這個問題很可能會重複,但我正在努力爲我的問題找到確切的答案。PHP - 將一週時間添加到用戶定義的日期

用戶輸入客戶租金的起始日期(在上一頁的表格上),那麼它需要生成客戶需要支付的下一個日期(一週後)。例如:

$start_date = $_POST['start_date']; 
$date_to_pay = ??? 

可以說用戶在2015年3月2日進入:

$start_date = "2015/03/02"; 

我再想日期支付等於一週後(2015年3月9日) :

$date_to_pay = "2015/03/09"; 

怎麼會這樣做呢?非常感謝。

+2

是的!有很多很多重複項:'$ _POST ['start_date'] ='2015/03/02'; $ date = new DateTime($ _ POST ['start_date']); $ date-> add(new DateInterval('P1W')); echo $ date-> format('Y/m/d');' – 2015-03-02 10:44:24

+0

從用戶輸入創建日期時間,然後在其上添加一個星期。對於代碼請參閱@MarkBaker的評論 – 2015-03-02 10:44:36

+0

檢查此鏈接: http://stackoverflow.com/questions/6086389/php-date-format-yyyy-mm-dd-minus-or-add-one-week-from -now – jems 2015-03-02 10:47:30

回答

5

你可以試試這個

$start_date = "2015/03/02"; 
$date = strtotime($start_date); 
$date = strtotime("+7 day", $date); 
echo date('Y/m/d', $date); 
+0

旁註: + 7天是好的,但你也可以做+ 1周,只是人的偏好。 – Naruto 2015-03-02 10:52:25

+0

應該注意,這是一個非常糟糕的做法,'strtotime'返回秒以來的秒,你可以簡單地添加一個星期在幾秒鐘內到達時間並避免對「strtotime」的額外緩慢調用。 '$ date = strtotime($ start_date)+ 604800;' – HostFission 2017-09-13 08:44:45

6

請嘗試以下方法:

date('d.m.Y', strtotime('+1 week', $start_date)); 
+0

所以我會讓$ date_to_pay = date('dmY',strtotime('+ 1 week',$ start_date)); ?? – Jack 2015-03-02 10:59:48

+0

確切地說,根據您的格式設置Y/m/d。 – 2015-03-02 11:02:03

+0

我只是再試一次因爲某些原因我的$ date_to_pay出來1970/01/07 lol – Jack 2015-03-02 11:11:23

1
$start_date = "2015/03/02"; 
$new_date= date("Y/m/d", strtotime("$start_date +1 week")); 
1

您可以使用這一個..使用DateTime

$startdate = $_POST['start_date']; 
$date_to_pay = date('Y/m/d',srtotime('+1 week',$startdate)); 
2

面向對象風格:

$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'); 

或爲那些誰喜歡擁有這一切一氣呵成:

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