2010-12-14 75 views
13

thể trùng lặp:
Get first day of week in PHP?Tìm Ngày đầu tiên của tuần qua php

Hi,

Tôi muốn tìm hẹn hò đầu tiên và cuối cùng của tuần hiện tại và tuần trước. Tương tự, tôi muốn tìm ngày đầu tiên và cuối cùng của tháng hiện tại và tháng trước.

Việc này phải được thực hiện bằng PHP. Hãy giúp tôi.

+0

Xem thêm: http://stackoverflow.com/questions/1897727/get-first -day-of-week-in-php –

+3

* (tham khảo) * [Định dạng ngày tương đối trong PHP] (http://de2.php.net/manual/en/datetime.formats.relative.php) – Gordon

Trả lời

42

strtotime là khá mạnh mẽ với relative time formats:

strtotime('monday this week'); 
strtotime('sunday this week'); 
strtotime('monday last week'); 
strtotime('sunday last week'); 

(điều này chỉ làm việc với PHP 5.3+)

strtotime('first day of this month'); 
strtotime('last day of this month'); 
strtotime('first day of last month'); 
strtotime('last day of last month'); 

Để có được ngày đầu tiên và cuối cùng của một tháng trong PHP < 5.3, bạn có thể sử dụng kết hợp mktimedate (date('t') cho số ngày trong tháng):

mktime(0,0,0,null, 1); // gives first day of current month 
mktime(0,0,0,null, date('t')); // gives last day of current month 

$lastMonth = strtotime('last month'); 
mktime(0,0,0,date('n', $lastMonth), 1); // gives first day of last month 
mktime(0,0,0,date('n', $lastMonth), date('t', $lastMonth); // gives last day of last month 

Nếu bạn chỉ muốn có được một chuỗi để trình bày, sau đó bạn không cần phải mktime:

date('Y-m-1'); // first day current month 
date('Y-m-t'); // last day current month 
date('Y-m-1', strtotime('last month')); // first day last month 
date('Y-m-t', strtotime('last month')); // last day last month 
+0

Bạn cung cấp giải pháp tuyệt vời Nhưng tiếc là điều này chỉ hoạt động trên PHP5.3 không phải trong 5.2. Tôi có PHP 5.2.14. Và điều này không hiệu quả! –

+1

@ user365870: Đúng, nó không được ghi lại ở bất cứ đâu, tôi chỉ đọc nó trong phần bình luận của trang .... dù sao, hãy xem câu trả lời cập nhật của tôi. –

+0

Cảm ơn bạn! Điều này làm việc hoàn hảo. Cảm ơn rất nhiều. –

3

Dưới đây là một chức năng cho ngày đầu tiên và cuối cùng của tuần:

function week_start_date($wk_num, $yr, $first = 1, $format = 'F d, Y') 
{ 
    $wk_ts = strtotime('+' . $wk_num . ' weeks', strtotime($yr . '0101')); 
    $mon_ts = strtotime('-' . date('w', $wk_ts) + $first . ' days', $wk_ts); 
    return date($format, $mon_ts); 
} 

$sStartDate = week_start_date($week_number, $year); 
$sEndDate = date('F d, Y', strtotime('+6 days', strtotime($sStartDate))); 

Nó có lẽ có thể được điều chỉnh để làm tháng là tốt, nhưng tôi muốn để có được câu trả lời của tôi trong! :)

+0

Tôi thực sự tìm thấy bài đăng trên diễn đàn mà anh ấy tham khảo bởi Googling của riêng tôi, Cảm ơn bạn :) ... thậm chí không thấy câu trả lời của anh ấy từ luồng stackoverflow khác ... – prilldev

+0

Ok, sau đó tôi rút lại nhận xét của mình :) –

+0

Điều này cũng hiệu quả đối với tôi. Cảm ơn –

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