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>

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

それは機能していますが、次の年を押すと2013年に移動し、次に「前の年」を押すと2012年ではなく2011年に移動します.

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 に答える