2

これが問題に直面している私のコードです

ここでは、現在の週番号を 1 つの変数 $week に保存しています

<?php
    $week=date('W')-1
?>

ここでは、投稿された $week 番号を減らすことで、前の週を取得しようとしているように、その週番号を URL に投稿しています。

<td width="120" height="70" align="center" style="border-bottom:1px dashed #000000; border-top:1px dashed #000000;">
    <h1 style="color:#000000;"/>
    <a href="ex2.php?week=<?=$week-1?>">
        <img src="../images/previous_week.jpg" width="91" height="44" border="0" />
    </a>
</td>

以下のコードの問題は.....

3 月 1 週目までは正常に動作していますが、3 月から前の週を取得することはできません。1970 年 1 月 1 日の UNIX タイムスタンプが表示されています...


投稿された週番号から前の週の日付を取得するコードは次のとおりです

<?php
include ('class.php');
if(!isset($_GET['week']))
{
    $count = $obj->getD();

    if(date('N') == $count)
    {

        $prior_week = date('W') - 1;
        if($prior_week == 0)
        {

            $prior_week = 52;
            $year = date('Y') - 1;
        } else
            $year = date('Y');

            echo date("d-m-Y", strtotime($year.'W'.$prior_week.'1'));
            echo " (MON)~ ";
            echo date("d-m-Y", strtotime($year.'W'.$prior_week.'7'));
            echo " (SUN) ";
        }
    } else{

        $count = $obj->getD();
        $week=$_GET['week'];

        if($week>=0)
        {
            if(date('N') == $count)
            {
                $prior_week = $week- 1;
                if($prior_week == 0)
                {
                    $prior_week = 52;
                    $year = date('Y') - 1;
                }
                else
                   $year = date('Y');

            echo date("d-m-Y", strtotime(date('Y').'W'.$prior_week.'1'));
            echo " (MON)~ ";
            echo date("d-m-Y", strtotime(date('Y').'W'.$prior_week.'7'));
            echo " (SUN) ";
        }
    }

}
?>
4

1 に答える 1

1

問題は、strtotime に渡す日付形式にあります。

number が 10 の場合、1 を引いて次のようになります。

date("Y-m-d",strtotime("2013W91"));

実際にあなたがやりたかったのは:

date("Y-m-d",strtotime("2013W091"));

10 未満の週番号は必ず 0 で埋めてください。

// ...
if ($prior_week < 10) {
  $prior_week = "0".$prior_week;
}
echo date("d-m-Y", strtotime(date('Y').'W'.$prior_week.'1'));
于 2013-06-07T11:47:21.747 に答える