需要帮助创建年和月的网址

时间:2009-09-14 17:00:50

标签: php

我需要创建下一个和上一个链接网址

这是一个样本

<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,但如果前一个月是新的一年,那将会搞得一团糟。

4 个答案:

答案 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;
}