我需要创建下一个和上一个链接网址
这是一个样本
<a href="/calendar/2009/10/">previous</a>
<? echo $_GET['month'].', '.$_GET['year']; // shows 11, 2009
<a href="/calendar/2009/12/">next</a>
其中第二段是年份,第一段是月份
我已经获得了GET数组中的月份和年份,但任何想法如何最好地做到这一点?
我认为prevmonth = month-1,但如果前一个月是新的一年,那将会搞得一团糟。
答案 0 :(得分:2)
您可以使用超出范围值的mktime
来执行此类操作。请参见手册页上的示例#2。
e.g。 echo date("M-d-Y", mktime(0, 0, 0, 13, 1, 1997));
将1998-01-01
。
答案 1 :(得分:1)
strtotime()非常容易。
$year = 2009;
$month = 5;
$nextMonth = strtotime('+1 Month', strtotime($year.'-'.$month.'-01'));
echo date('Y/m', $nextMonth);
答案 2 :(得分:0)
相当容易理解那种逻辑......?如果您的月份超出界限,只需加入/减去年份......
#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]++;
}
答案 3 :(得分:0)
我认为最简单的方法就是检查“上个月&lt; 1”状态并减少年份。可能有一种更聪明的方法可以做到这一点,但这很容易理解:
$prevyear = intval($_GET['year']);
$prevmonth = intval($_GET['month']) - 1;
// Check for year rollover.
if ( $prevmonth < 1 ) {
$prevmonth = 12;
$prevyear = $prevyear - 1;
}