2010-09-03 29 views

Trả lời

17

Nếu bạn có những ngày như chuỗi bạn chỉ có thể sử dụng strtotime(), nếu bạn chỉ có một phần thông tin bạn có thể sử dụng mktime().

Tuy nhiên, ngày chỉ có 30 ngày;)

Ví dụ:

$month = 9; 
$year = 2010; 

$first = mktime(0,0,0,$month,1,$year); 
echo date('r', $first); 

$last = mktime(23,59,00,$month+1,0,$year); 
echo date('r', $last); 
+0

Tôi không có các chuỗi này, 2 thông số được truyền qua chuỗi truy vấn là tháng và năm. Từ đó tôi cần phải làm việc trên dấu thời gian đầu tiên và cuối cùng. – dotty

+0

Ok, chỉnh sửa câu trả lời của tôi –

+0

Đây là cách tôi đã viết nó tuy nhiên tôi hơn đến vấn đề của fabrik với $ days_in_month = cal_days_in_month (CAL_GREGORIAN, $ month, $ year); – dotty

1

Có lẽ nó có thể được thực hiện đơn giản nhưng bạn sẽ có được ý tưởng:

<?php 

$start = mktime(0, 0, 1, $month, 1, $year); 
$end = mktime(23, 59, 00, $month, date('t', $month), $year); 

?> 
4

Nếu bạn đang sử dụng PHP 5.3 (không thử với 5.2, trình phân tích cú pháp ngày hoạt động khác ở đó) bạn có thể nói:

<?php 

$date = "2010-05-10 00:00:00"; 

$x = new DateTime($date); 

$x->modify("last day of this month"); 
$x->modify("last second"); 

echo $x->format("Y-m-d H:i:s"); 
// 2010-05-30 23:59:59 
$timestamp = $x->getTimestamp(); 
+1

OP cần hai dấu thời gian không phải là ngày được định dạng nếu tôi đúng. – fabrik

+0

Đã chỉnh sửa trong getTimestamp, định dạng cũng giống như bằng chứng nhanh chóng có thể quét được mà nó hoạt động. Cảm ơn ! – edorian

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