2010-10-14 57 views

Trả lời

17
$date = mktime(0, 0, 0, $month, 1, $year); 
echo strftime('%B %Y', strtotime('+1 month', $date)); 
echo strftime('%B %Y', strtotime('-1 month', $date)); 
1
$prevMonth = $month - 1; 
$nextMonth = $month + 1; 
$prevYear = $year; 
$nextYear = $year; 

if ($prevMonth < 1) { 
    $prevMonth = 1; 
    $prevYear -= 1; 
} 

if ($nextMonth > 12) { 
    $nextMonth = 1; 
    $nextYear += 1 
} 

hoặc

// PHP > 5.2.0 
$date = new DateTime(); 
$date->setDate($year, $month, 1); 
$prevDate = $date->modify('-1 month'); 
$nextDate = $date->modify('+1 month'); 
// some $prevDate->format() and $nextDate->format() 
+1

PHP thực hiện tất cả công việc khó khăn này cho bạn với mktime. – Fenton

+0

@Sohnee, tôi thích DateTime –

+0

@RS - Tôi không gặp rắc rối với ví dụ 5.2 của bạn ... đó là ví dụ trước. – Fenton

1

Bạn chỉ có thể thêm 1 đến tháng hiện tại và sau đó xem nếu bạn vượt qua năm:

$next_year = $year; 
$next_month = ++$month; 

if($next_month == 13) { 
    $next_month = 1;  
    $next_year++; 
} 

Tương tự cho tháng trước bạn có thể làm :

$prev_year = $year; 
$prev_month = --$month; 

if($prev_month == 0) { 
    $prev_month = 12; 
    $prev_year--; 
} 
+1

Crikey! Bạn có biết rằng PHP có thể làm điều này cho bạn? – Fenton

+0

Tôi biết điều đó. Nhưng cái này rõ ràng hơn. Ít nhất là cho tôi. – codaddict

2

PHP là tuyệt vời trong lĩnh vực này, nó sẽ xử lý tràn cập nhật bằng cách sửa ngày cho bạn ...

$PreviousMonth = mktime(0, 0, 0, $month - 1, 1, $year); 
$CurrentMonth = mktime(0, 0, 0, $month, 1, $year); 
$NextMonth = mktime(0, 0, 0, $month + 1, 1, $year); 

echo '<p>Next month is ' . date('Ym', $NextMonth) . 
    ' and previous month is ' . date('Ym', $PreviousMonth . '</p>'; 
0

strftime * : - * Định dạng thời gian và/hoặc ngày theo cài đặt ngôn ngữ. Các tên tháng và các ngày trong tuần và các chuỗi phụ thuộc ngôn ngữ khác tôn trọng tập hợp miền địa phương hiện tại với setlocale().

strftime('%B %Y', strtotime('+1 month', $date)); 
strftime('%B %Y', strtotime('-1 month', $date)); 
3

thử nó như thế này:

$date = mktime(0, 0, 0, $month, 1, $year); 
echo date("Y-m", strtotime('-1 month', $date)); 
echo date("Y-m", strtotime('+1 month', $date)); 

hay, ngắn hơn, như thế này:

echo date("Y-m", mktime(0, 0, 0, $month-1, 1, $year)); 
echo date("Y-m", mktime(0, 0, 0, $month+1, 1, $year)); 
0
 echo date('Y-m-d', strtotime('next month')); 
0
setlocale(LC_TIME,"turkish"); 
$Currentmonth=iconv("ISO-8859-9","UTF-8",strftime('%B')); 
$Previousmonth=iconv("ISO-8859-9","UTF-8",strftime('%B',strtotime('-1 MONTH'))); 
$Nextmonth=iconv("ISO-8859-9","UTF-8",strftime('%B',strtotime('+1 MONTH'))); 

echo $Previousmonth; // Şubat /* 2017-02 */ 
echo $Currentmonth; // Mart /* 2017-03 */ 
echo $Nextmonth; // Nisan /* 2017-04 */ 
Các vấn đề liên quan