2010-04-09 30 views
10

Tôi không biết cách giải thích điều này một cách chính xác nhưng chỉ một số mẫu cho các bạn để bạn có thể thực sự hiểu được những gì Im đang cố gắng nói.php nhận thời gian ngày trong tương lai

Hôm nay là 09 tháng tư năm 2010

7 ngày kể từ bây giờ là tháng 16,2010

Im tìm kiếm một mã php, mà có thể cung cấp cho tôi những ngày chính xác cho số ngày khoảng trước ngay hiện tại.

Tôi đã tìm kiếm một chuỗi có thể giải quyết hoặc thậm chí đưa ra gợi ý về cách giải quyết vấn đề này nhưng tôi không tìm thấy.

+0

thể này có thể được viết lại như "Tôi muốn thêm ' $ x' số ngày đến một ngày nhất định "? – deceze

+0

Câu hỏi của bạn không rõ ràng. Bạn có thể chỉ định lại các tham số đã biết và giá trị nào bạn quan tâm không? –

Trả lời

25

Nếu bạn đang sử dụng PHP> = 5.2, tôi đề nghị bạn nên sử dụng đối tượng DateTime mới, mà làm cho làm việc với các ngày dễ dàng hơn nhiều:

<?php 
$date = new DateTime("2006-12-12"); 
$date->modify("+7 day"); 
echo $date->format("Y-m-d"); 
?> 
+0

câu trả lời tuyệt vời ,, nó giúp tôi rất nhiều –

+1

hoặc cho một lớp lót 1 echo date_create ("2006-12-12") -> sửa đổi ("+ 7 ngày") -> định dạng ("Y-m-d"); ' –

9

Hãy xem ở đây - http://php.net/manual/en/function.strtotime.php

<?php 
// This is what you need for future date from now. 
echo date('Y-m-d H:i:s', strtotime("+7 day")); 

// This is what you need for future date from specific date. 
echo date('Y-m-d H:i:s', strtotime('01/01/2010 +7 day')); 
?> 
+0

+1. Bạn có thể không muốn 'echo strtotime (...)'. Thay vào đó, sử dụng giá trị trả về bên trong hàm date, chẳng hạn như 'echo date ('Y-m-d H: i: s', strtotime ('- 7 ngày'))'. –

0

Bạn có thể sử dụng mktime với ngày. (http://php.net/manual/en/function.date.php)

Ngày cung cấp cho bạn ngày hiện tại. Điều này tốt hơn là chỉ cần thêm/trừ vào một dấu thời gian vì nó có thể tính đến thời gian tiết kiệm ánh sáng ban ngày.

<?php 
# this gets you 7 days earlier than the current date 
$lastWeek = mktime(0, 0, 0, date("m") , date("d")-7, date("Y")); 
# now pretty-print it out (eg, prints April 2, 2010.) 
echo date("F j, Y.", $lastWeek), "\n"; 
?> 
2

Bạn sẽ phải xem xét strtotime(). Tôi muốn tưởng tượng mã cuối cùng của bạn sẽ trông như thế này:

$future_date = "April 16,2010"; 
$seconds = strtotime($future_date) - time(); 
$days = $seconds /(60 * 60* 24); 
echo $days; //Returns "6.0212962962963" 
+0

"6.0212962962963" - ví dụ cổ điển về vấn đề chính xác nổi của PHP :) –

+0

Không thực sự, chỉ số _exact_ ngày được biểu thị dưới dạng số thập phân. – Sam152

1

Nếu bạn đang sử dụng PHP> = 5.3, đây có thể là một tùy chọn.

<?php 
$date = new DateTime("2006-12-12"); 
$date->add(new DateInterval("P7D")); 
?> 
5

Câu trả lời được chấp nhận là không sai nhưng không phải là giải pháp tốt nhất:

Các DateTime lớp mất một chuỗi tùy chọn trong các nhà xây dựng, có thể xác định logic giống như sửa đổi phương pháp.

<?php 
$date = new DateTime("+7 day"); 

Ví dụ:

<?php 
namespace DateTimeExample; 

$now = new \DateTime("now"); 
$inOneWeek = new \DateTime("+7 day"); 

printf("Now it's the %s", $now->format('Y-m-d')); 
printf("In one week it's the %s", $inOneWeek->format('Y-m-d')); 

Đối với một danh sách các định dạng tương đối sẵn (đối với các nhà xây dựng DateTime) hãy nhìn vào http://php.net/manual/de/datetime.formats.relative.php

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