2009-12-17 31 views
11

Birçok örnek, bu güne günler eklemekle ilgilidir. Ama nasıl yapacağım, eğer farklı bir nişan günüm varsa?Belirli bir güne günler ekleniyor

Örneğin (çalışmaz):

$day='2010-01-23'; 

// add 7 days to the date above 
$NewDate= Date('$day', strtotime("+7 days")); 
echo $NewDate; 

yukarıdaki Örnek çalışmaz. Tarihin bulunduğu yere başka bir şey koyarak, açılış gününü nasıl değiştirmeliyim?

+2

'$ günün bir yazım hatası olduğunu: İşte belgeleri var? değişkenleri tırnak içine almazsınız. – TravisO

cevap

29

Gönderen: PHP 5.3+ kullanıyorsanız

$day='2010-01-23'; 

// add 7 days to the date above 
$NewDate = date('Y-m-d', strtotime($day . " +7 days")); 
echo $NewDate; 

, yeni DateTime kullanabilirsiniz Çok kullanışlı olan kütüphaneler:

$day = '2010-01-23'; 

// add 7 days to the date above 
$NewDate = new DateTime($day); 
$NewDate->add(new DateInterval('P7D'); 
echo $NewDate->format('Y-m-d'); 

Şimdi çok güçlü olduğu için DateTime'u kullanmaya başladım. Ayrıca, zaman dilimini, örnekleme sırasında kolayca ifade edebilirsiniz, yani new DateTime($time, new DateTimeZone('UTC')). DateInterval nesnelerle tarihi değiştirmek için add() ve sub() yöntemlerini kullanabilirsiniz.

+0

$ NewDate-> add (yeni DateInterval ('P7D'); - buradan sonuna 'ekstra' eklemelisiniz. – mmvsbg

1

Kodunuzdaki dayalı bir çok temel düzeltme için php.com binupillai2003

<?php 
/* 
Add day/week/month to a particular date 
@param1 yyyy-mm-dd 
@param1 integer 
by Binu V Pillai on 2009-12-17 
*/ 

function addDate($date,$day)//add days 
{ 
$sum = strtotime(date("Y-m-d", strtotime("$date")) . " +$day days"); 
$dateTo=date('Y-m-d',$sum); 
return $dateTo; 
} 

?> 
+2

"$ date" teknik olarak işe yarayabilir, zayıf sözdizimi, sadece $ date tarihini belirtin – TravisO

9
$NewDate = date('Y-m-d', strtotime('+7 days', strtotime($day))); 
+3

Bu sadece unix döneminden bu yana saniye sürecek. –

İlgili konular