2010-12-27 9 views
22

Tôi có $adate; chứa:PHP: thêm giây để một ngày

Tue Jan 4 07:59:59 2011 

tôi muốn thêm vào ngày này như sau:

$duration=674165; // in seconds 

Khi giây được thêm tôi cần kết quả lại thành định dạng ngày.

Tôi không biết mình đang làm gì, nhưng tôi nhận được kết quả kỳ quặc.

Lưu ý: cả hai biến đều là động. Bây giờ chúng bằng với các giá trị đã cho, nhưng truy vấn tiếp theo chúng sẽ có các giá trị khác nhau.

Trả lời

55

Nếu bạn đang sử dụng php 5.3+ bạn có thể sử dụng một phương pháp mới để làm điều đó.

<?php 
$date = new DateTime(); 
echo $date->getTimestamp(). "<br>"; 
$date->add(new DateInterval('PT674165S')); // adds 674165 secs 
echo $date->getTimestamp(); 
?> 
+6

'$ date = new \ DateTime ('+'. $ Interval. 'Seconds'); ' – gondo

+5

Tôi nghĩ nó dễ hơn như thế này: ' $ date-> add (DateInterval :: createFromDateString (' 2 seconds ')); ' Nếu bạn muốn khoảng thời gian khác, hãy xem tại đây: http://php.net/manual/en/dateinterval.createfromdatestring.php –

+1

PT và S trong PT674165S là gì? – Andrew

10

Với thực tế là $adate là một dấu thời gian (nếu đó là trường hợp), bạn có thể làm một cái gì đó như thế này:

$duration = 674165; 
$result_date = strtotime(sprintf('+%d seconds', $duration), $adate); 
echo date('Y-m-d H:i:s', $result_date); 
+0

Hoặc những gì giống nhau, bạn có thể thêm $ thời gian ' 'to' $ adate'. – ncuesta

21

Chỉ cần sử dụng một số đẹp PHP chức năng ngày/giờ:

$adate="Tue Jan 4 07:59:59 2011"; 
$duration=674165; 
$dateinsec=strtotime($adate); 
$newdate=$dateinsec+$duration; 
echo date('D M H:i:s Y',$newdate); 
+0

cảm ơn rất nhiều chàng trai, hoạt động tuyệt vời !! – user523129

2

Làm điều này:

$seconds = 1; 
$date_now = "2016-06-02 00:00:00"; 

echo date("Y-m-d H:i:s", (strtotime(date($date_now)) + $seconds)); 
2
// add 20 sec to now 
$duration = 20; 
echo date("Y-m-d H:i:s", strtotime("+$duration sec")); 
0
$current_time_zone = 150; 
date("Y-m-d H:i:s",strtotime(date("Y-m-d H:i:s"))+$current_time_zone);