2012-03-29 25 views
5

Gói lưu trữ được chia sẻ của tôi tại 1and1 chỉ bao gồm PHP 5.2.17 - vì vậy tôi không thể sử dụng đối tượng DateTime. Rất phiền phức!Thêm X tuần vào một ngày bằng cách sử dụng PHP 5.2

Tôi hiện đang có mã này

$eventDate = new DateTime('2013-03-16'); // START DATE 
$finishDate = $eventDate->add(new DateInterval('P'.$profile["Weeks"].'W')); 

Nhưng rõ ràng là nó sẽ không hoạt động.

Làm cách nào để tôi có thể làm như vậy với mã sẽ hoạt động với PHP5.2? (Mã này cho biết thêm X số tuần đến một ngày cụ thể.)

Trả lời

11

Chỉ cần lấy dấu thời gian với strtotime() và thêm x * giây của một tuần

$newTime = strtotime('2013-03-16') + ($numberOfWeeks * 60 * 60 * 24 * 7); // 604800 seconds 

hoặc những gì tôi vừa phát hiện ra:

$newTime = strtotime('+'.$numberOfWeeks.' weeks', strtotime('2013-03-16')); 

Hoặc bạn có thể sử dụng lớp DateTime. Sử dụng các phương pháp modify để thay đổi ngày của bạn (như trong strtotime):

$d = new DateTime('2013-03-16'); 
$d->modify('+'.$numberOfWeeks.' weeks'); 
+1

'strtotime()' mang lại nhiều vấn đề hơn dường như. Sử dụng chức năng lớp 'DateTime' để tránh các lỗi lạ khi tính thời gian và bạn sẽ không bao giờ bỏ lỡ dù chỉ một giây. –

+0

@Paul Bạn biết rằng nó thiếu 'DateInterval' trong PHP 5.2? Tất nhiên luôn có câu trả lời khác. –

+0

Và điều gì về ['DateTime :: modify()'] (http://www.php.net/manual/en/datetime.modify.php), là từ _PHP 5.2.0_? Nó cũng làm việc với các giá trị tích cực và tiêu cực. Chỉ vài ngày trước tôi đã sửa lỗi trong sản phẩm của riêng tôi. Tôi đã tính toán khoảng thời gian bởi sự khác biệt của timestamps và trên lề của 2 (tháng mười-tháng mười một) tháng đã mất 2 tuần. Sửa chữa để 'DateTime' thực hiện và đó là nó. –

3

Bạn có thể sử dụng đối tượng DateTime trong PHP 5.2, nó chỉ là thêm phương pháp đó đã được bổ sung trong PHP 5.3. Bạn có thể sử dụng the modify method trong PHP 5.2.

$finishDate = $eventDate->modify('+'.$profile["Weeks"].' weeks'); 

Xin lưu ý rằng điều này sẽ sửa đổi đối tượng mà bạn thực hiện thao tác. Vì vậy, $ eventDate cũng sẽ bị thay đổi.

Các vấn đề liên quan