2

ユーザーが1週間進んだり戻ったりできるように、週ごとのカレンダーを作成しようとしています。これまでのところ私はこれを持っています...

<?
if(isset($_POST['add_week'])){
     $last_week_ts = strtotime($_POST['last_week']);
     $display_week_ts = $last_week_ts + (3600 * 24 * 7);
} else if (isset($_POST['back_week'])) {
     $last_week_ts = strtotime($_POST['last_week']);
     $display_week_ts = $last_week_ts - (3600 * 24 * 7);
} else {
    $display_week_ts = floor(time() / (3600 * 24)) * 3600 * 24;
}

    $week_start = date('d-m-Y', $display_week_ts);
    $week_number = date("W", strtotime( $display_week_ts));
    $year = date("Y", strtotime( $display_week_ts));

echo $week_start.' '.$week_number.' '.$year;
?>

<table name="week">
    <tr>
<?
for($day=1; $day<=7; $day++)
{
    echo '<td>';
    echo date('d-m-Y', strtotime($year."W".$week_number.$day))." | \n";
    echo '</td>';
}
?>
</tr>
<tr>
<form name="move_weeks" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="hidden" name="last_week" value="<? echo $week_start; ?>" />
<td colspan="7"><input type="submit" name="back_week" value="back_week" /><input type="submit" name="add_week" value="add_week" />
</td>
</form>
</tr>
</table>

[戻る]ボタンと[進む]ボタンは正常に機能し、週の最初の日付を表す$ week_start変数は、必要に応じて進み、戻りますが、表示される日付に関係なく、$week_numberと$yearは01と1970または36と1600として表示されます。 。

$ display_week_tsからそれらを抽出しようとした方法と関係があるはずですが、何がわかりません

4

2 に答える 2

3

次のように見えます。

$week_start = date('d-m-Y', $display_week_ts);
$week_number = date("W", strtotime( $display_week_ts));
$year = date("Y", strtotime( $display_week_ts));

最初のステートメントでどのように使用$display_week_tsしているかを確認してください。ただし、他の(および同様の)ステートメントの場合は、そのタイムスタンプを呼び出し内にラップして、strtotime()を返しますfalse

を削除してstrtotime()、変数をそのまま使用することをお勧めします。

$week_number = date("W", $display_week_ts);
$year = date("Y", $display_week_ts);
于 2012-09-04T16:28:25.273 に答える
0

わかりました。修正しました。代わりに、$week_startから週番号と年を取得する必要がありました。

于 2012-09-04T16:31:06.743 に答える