2010-10-14 5 views

Répondre

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 
} 

ou

// 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 fait tout ce travail pour vous avec mktime. – Fenton

+0

@Sohnee, je préfère DateTime –

+0

@RS - Je n'ai aucun problème avec votre exemple 5.2 ... c'est le précédent. – Fenton

1

Vous pouvez simplement ajouter 1 au mois en cours et voir si vous avez passé l'année:

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

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

De même pour le mois précédent, vous pouvez faire :

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

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

Crikey! Saviez-vous que PHP peut le faire pour vous? – Fenton

+0

Je le sais. Mais celui-ci est plus clair. Au moins pour moi. – codaddict

2

PHP est génial à cet égard, il se chargera de la date déversoirs en corrigeant la date pour vous ...

$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 * : - * Format du temps et/ou la date en fonction des paramètres régionaux. Les noms de mois et de jours de la semaine et les autres chaînes dépendantes de la langue respectent les paramètres régionaux actuels définis avec setlocale().

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

essayer comme ceci:

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

ou, plus court, comme celui-ci:

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 */