0

私は、ユーザーがフォームのボタンを使用して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);

for ($i = 0; $i < 7; $i++) {
    $current_day_ts = $display_week_ts + ($i * 3600 *24);
    echo date('d-m-Y', $current_day_ts); 
}

私は問題が何であるかを知っています、ライン

$display_week_ts = floor(time() / (3600 * 24)) * 3600 * 24;

それは現在の日を呼び出しますが、$ week_startは週の最初の日である必要がありますが、私は見つけることができるすべてを試しました。私が試してみました

$display_week_ts = strtotime("Monday noon");

これは、日記が10月29日月曜日に到達するまではうまく機能しているようです。その時点で、1日スキップし、代わりに10月29日を火曜日にします。

このサイトで週の初めを見つけた別のトピックを見つけましたが、それらのいずれも正常に実装できませんでした

私はこの問題でどんな援助にも非常に感謝します、私は今3日間それに取り組んでいます...

4

1 に答える 1

0

これを試して:

$display_week_ts = floor(time() / (3600 * 24)) * 3600 * 24; 
$dow = date("w", $display_week_ts);
$dow = ($dow + 6) % 7;
$display_week_ts -= $dow * 3600 * 24;

$monday = new DateTime(date("Y-m-d", $display_week_ts));

$monday今週の月曜日の日付が含まれるようになりました。このオブジェクトをセッションに保存します。来週に移動する必要がある場合は、次の月曜日を検索します

$monday->modify('+1 week');

前の月曜日を見つけるには、次を使用します。

$monday->modify('-1 week');

新しい月曜日を見つけたら、それをセッションに戻します。

于 2012-09-05T09:53:51.100 に答える