2009-09-14 28 views
0

我需要创建一个和前一个链接网址需要帮助建立与年份和月份的URL

这里有一个样本

<a href="/calendar/2009/10/">previous</a> 
<? echo $_GET['month'].', '.$_GET['year']; // shows 11, 2009 
<a href="/calendar/2009/12/">next</a> 

,其中第2段是一年,第一段月份

我已经得到了GET数组中的月份和年份,但任何想法如何最好地做到这一点?

我在想prevmonth = month-1,但是如果前一个月是新的一年,那就会搞砸了。

回答

2

您可以使用mktime有超出范围的值用做这样的事情。请参阅手册页上的示例#2。

例如echo date("M-d-Y", mktime(0, 0, 0, 13, 1, 1997));将给1998-01-01

+0

非常光滑这个工作对我来说 $ prev_month =日期( “Y/N”,mktime(0,0,0,$个月 - 1,1,$年)); $ next_month = date(“Y/n”,mktime(0,0,0,$ month + 1,1,$ year)); – mjr 2009-09-14 18:29:40

0

很容易理解这种逻辑......?只是INC/DEC年,如果你的月超出界限...

#sanity check inputs 
$month=min(max(intval($_GET['month']), 1),12); 
$year=intval($_GET['year']); 

$prev=array($month-1, $year); 
if ($prev[0]==0) 
{ 
    $prev[0]=12; 
    $prev[1]--; 
} 
$next=array($month+1, $year); 
if ($next[0]==13) 
{ 
    $next[0]=1; 
    $next[1]++; 
} 
0

我认为最简单的方法也只是检查“前一个月< 1”的条件和减少一年。有可能是一个更聪明的方式来做到这一点,但是这是很容易理解:

$prevyear = intval($_GET['year']); 
$prevmonth = intval($_GET['month']) - 1; 

// Check for year rollover. 
if ($prevmonth < 1) { 
    $prevmonth = 12; 
    $prevyear = $prevyear - 1; 
} 
1

strtotime()使它变得非常简单。

$year = 2009; 
$month = 5; 

$nextMonth = strtotime('+1 Month', strtotime($year.'-'.$month.'-01')); 

echo date('Y/m', $nextMonth);