2

私は次のタスクを実行しようとしています。私は3つのビュー(日、週、月)を持つカスタムカレンダーを開発しています。すでに何かがあるかもしれませんが、私も学習ツールの一部としてこれを書き直しています。

そのため、ユーザーは最初にアクセスしたときに日表示に直面し、もちろん翌日または前日に前後に移動する矢印が表示されます。週の表示をクリックすると、今日の日付がデフォルトの7日間の概要が表示され、もう一度来週または前の週に行ったり来たりできます。最後のビューは1か月のカレンダーです。ユーザーがその日をクリックすると、その日の詳細が表示されると同時に、選択した日としてデフォルトがリセットされます。したがって、週の表示に戻ると、週の詳細に選択した日が含まれていることがわかります。これは私が頭を悩ませるのに苦労しているところです。曜日を決定するPHP関数があることは知っていますが、日付を渡し、日曜日から週全体を取得する方法を考えることができないようです。過ぎ去った日。たとえば、

ご協力または正しい方向を示していただきありがとうございます。文法やつづりの間違いもお許しください。

4

4 に答える 4

2
  1. $selectionこれがユーザーの選択した日付を整数のタイムスタンプとして表すと仮定すると、date('N', $selection)は選択した曜日の数値表現を返します(たとえば、月曜日=1から日曜日=7)。

    この結果は、選択した週の開始(前の日曜日)からの日数も表します- $offset。もちろん、ユーザーが選択した日付の文字列表現から始める場合(質問のように、2012年10月12日)、最初に日付を整数のタイムスタンプに変換する必要があります。

    $selection = strtotime($selection); //if $selection is in string format
    $offset = date('N', $selection);
    


  2. $offsetこれで、週の初め(前の日曜日)の日付を設定するために使用できます- $weekstart

    $weekstart = strtotime("$selection -$offset day");
    


  3. 週の始まりを取得すると、もちろん、週の終わり($weekend)は6日後ですが、この日付を計算するには、最初に$weekstart整数のタイムスタンプから日付の文字列表現に変換する必要があります。$weekendまた、結果( )を日付の文字列表現に変換する必要があります。

    $weekstart = stringftime("%m/%d/%Y", $weekstart); //date format = 10/07/2012
    $weekend = strtotime("$weekstart +6 day");
    $weekend = stringftime("%m/%d/%Y", $weekend);
    



したがって、次のようになります。

$selection = "10/12/2012";
$selection = strtotime($selection);
$offset = date('N', $selection);
$weekstart = strtotime("$selection -$offset day");
$weekstart = stringftime("%m/%d/%Y", $weekstart);
$weekend = strtotime("$weekstart +6 day");
$weekend = stringftime("%m/%d/%Y", $weekend);

$output = "Selected Date = $selection \n Selected Week = $weekstart - $weekend";

echo $output;

結果:

Selected Date = 10/12/2012
Selected Week = 10/07/2012 - 10/13/2020



見る:

http://php.net/manual/en/function.date.phphttp://php.net/manual/en/function.strtotime.phphttp://php.net/manual/en/function.strftime
_
php

于 2012-10-12T16:44:28.417 に答える
0

このタスクのstrtotime()機能と組み合わせた機能を使用するdate()

たとえば。2012-10-09の1日前は

echo date('Y-m-d', strtotime("2012-10-09 -1 day"));
于 2012-10-12T15:44:01.153 に答える
0

知恵の答えに基づいて、あなたはいくつかのステップで週の最初の日を見つけることができます。その他のオプションについては、 PHPのdate()マニュアルを確認してください。ただし、次のコードが機能すると思います。

// figure out how many days back you have to go, to get to Sunday
$d = date('N', strtotime($mydate));
// figure out Sunday's date
$beginning_of_week = date('Y-m-d', strtotime($mydate." -{$d} days"));
$end_of_week = date('Y-m-d', strtotime($beginning_of_week." +1 week"));
echo "The week {$beginning_of_week} to {$end_of_week}! ";
于 2012-10-12T15:52:09.767 に答える
0

この機能を試してください(出典:Marty Wallace)。

関心のある日付は$date(YYYY-MM-DD形式)で、$rollover終日形式(金曜日など)です。

function getWeeks($date, $rollover)

{
    $cut = substr($date, 0, 8);
    $daylen = 86400;

    $timestamp = strtotime($date);
    $first = strtotime($cut . "00");
    $elapsed = ($timestamp - $first) / $daylen;

    $i = 1;
    $weeks = 1;

    for($i; $i<=$elapsed; $i++)
    {
        $dayfind = $cut . (strlen($i) < 2 ? '0' . $i : $i);
        $daytimestamp = strtotime($dayfind);

        $day = strtolower(date("l", $daytimestamp));

        if($day == strtolower($rollover))  $weeks ++;
    }

    return $weeks;
}
于 2012-10-12T18:21:31.293 に答える