0

这是我的代码。

/*******************************PHP CODE*****************************************/
if(isset($_GET['date'])){ //
    $date = $_GET['date']; 
    $date = date('Y', strtotime($date));
}
else{
    $tomorrow = mktime(0, 0, 0, date("m"), date("d"), date("Y"));
    $date = date("Y", $tomorrow);
}


/*************************************************************************/
<table width="214" height="78" border"0">
    <tr align="center">
    <td colspan="10"><a href="?date=<?= date("Y", strtotime($date .'-1 year')) ?>"  title="Previous Day" >Previous Year</a></td>

    <td width="95" colspan="2"><a href="?date=<?= date("Y", strtotime($date . '+1 year')) ?>" title="Next Day" >Next Year</a></td>

    </tr>
    <tr align="center">
    <td colspan="12" align="center"></td></tr>
</table>

/***********************************************************/

它正在工作,但如果我按 NEXT year 它将带我到 2013 年,然后我按'PREVIOUS Year' 它将带我到 2011 年而不是 2012 年。

4

1 回答 1

0

当您使用的只是年份数字时,您对这些日期函数太着迷了。

$tomorrow = mktime(0, 0, 0, date("m"), date("d"), date("Y"));
$date = date("Y", $tomorrow);

这与简单地相同:

$date = date("Y");

$tomorrow那里没有任何意义,您只是以冗长的方式获取当前日期。这里还有一些令人困惑的东西:

<a title="Next Day">Next Year</a>

还有这个:

date("Y", strtotime($date . '+1 year'))

简直就是一样$date + 1

此外,如果您使用 strtotime,请确保不要将它们混在一起。strtotime($date .'-1 year')出来的东西strtotime('2012-1 year')不起作用,如果你必须使用这种方法,请在减号前加一个空格。

如果您只是多年工作,我认为这可能是您所追求的:

<?php
if(isset($_GET['date'])) {
    $date = $_GET['date']; 
} else {
    $date = date("Y"); // current year
}
?>
<a href="?date=<?= $date - 1 ?>">Previous Year</a></td>
<a href="?date=<?= $date + 1 ?>">Next Year</a></td>
于 2012-11-08T07:50:10.880 回答