1

現在、php の週番号を渡す変数から前の週を取得する必要があるため、13 週の場合は 12 週を取得します。

私が直面している問題は、もし私が週 1 にいる場合、元の数から 1 を引くだけで、if ステートメントを作成しない限り、週 0 を返すことです:

if($week==1)
{
    $prev_week=52;
    $prev_year=$year-1;
}

これは、php が週を 0 ではなく 1 からカウントすることを前提としています。これは少しぎこちなく、PHP の多くの日付と時刻関数を利用してこれを行うためのより良い方法があるのではないかと考えていました。

4

6 に答える 6

7

これを試して:

$currentWeek = date( 'W' );

$today = strtotime( date( 'Y-m-d' ) ) - 7*24*60*60; // last week this day
// change 7 to 30 to see last year's week numer

$lastWeek = date( 'W', $today );

echo $currentWeek . '--' . $lastWeek;

お役に立てれば。

アップデート

$lastWeekNumber = date( 'W', strtotime( 'last week' ) );
于 2013-01-28T12:11:05.570 に答える
3
$PreviousWeek = date("W",strtotime("-1 week"));
于 2015-07-20T10:37:47.080 に答える
1

問題を複雑にしすぎている可能性があると思います。基本的に、選択した週の前の週に表示されるデータベースから結果を取得する必要があります。したがって、1年に54週間の可能性がある場合、実際に行う必要があるのは次のとおりです。

 if($week==1)
 {
    $year_minsued=$year-1;
    $week_minused=54;
 }
 else
 {
    $week_minused=$week-1;
    $year_minused=$year;
 }

私のselectステートメントは次のようになります。

SELECT SUM(post_price), SUM(total_price) FROM
database_table
WHERE client_id='$account_no'
AND
   (year<='$year_minused' AND week<='$week_minused')

私はまだこれをテストしていませんが、それでうまくいくはずだと思います。

于 2013-01-28T12:37:46.647 に答える
1

HamZa と web-nomad の回答は、私がもう少し先に進み、適切な年を取得するのに役立ちました. date ('Y')ISO-8601 (ヨーロッパで使用されているもの) に従って、第 1 週が次の年または前の年に属する可能性があるため、使用すると予期しない動作が発生する可能性があります。代わりに を使用しますdate ('o')。そうしないと、第 52 週から前年の第 1 週にジャンプする可能性があります ( date ('Y').

$jahr = 2014; // jahr means year
$kw   = 52;   // kw contains week

date ('Y')返品の使用:

previousWeek: 51-2014
currentWeek: 52-2014
nextWeek: 01-2014

date ('o')返品の使用:

previousWeek: 51-2014
currentWeek: 52-2014
nextWeek: 01-2015

前方リンクと後方リンクの構築など、すべてのコードをまとめて表示します。

$kwBack['kw'] = date ("W", strtotime ($jahr. 'W' . str_pad ($kw, 2, 0, STR_PAD_LEFT). ' -1 week'));
$kwBack['jahr'] = date ("o", strtotime ($jahr. 'W' . str_pad ($kw, 2, 0, STR_PAD_LEFT). ' -1 week'));

$kwNext['kw'] = date ("W", strtotime ($jahr. 'W' . str_pad ($kw, 2, 0, STR_PAD_LEFT). ' +1 week'));
$kwNext['jahr'] = date ("o", strtotime ($jahr. 'W' . str_pad ($kw, 2, 0, STR_PAD_LEFT). ' +1 week'));

echo "previousWeek:     " . $kwBack['kw'] . "-" . $kwBack['jahr'];
echo "<br>currentWeek:  " . $kw . "-" . $jahr;
echo "<br>nextWeek:     " . $kwNext['kw'] . "-" . $kwNext['jahr'];
echo "<br>";

// Build the links

$urlBack = $_SERVER['PHP_SELF'] . "?" . http_build_query ($kwBack);
$urlNext = $_SERVER['PHP_SELF'] . "?" . http_build_query ($kwNext);

echo "Previous week: ". $urlBack . "<br>";
echo "Next week: ". $urlNext;
于 2014-12-13T16:10:48.520 に答える
0

これをチェックして

$year = 2013; // Retrieved from the DB
$week = 1;
$prev_week = date("W",strtotime($year. 'W'.str_pad($week, 2, 0, STR_PAD_LEFT). ' -1 week'));
echo $prev_week; // returns 52

年を示すデモ:

$year = 2013; // Retrieved from the DB
$week = 1;
$prev_week = date("W - Y",strtotime($year. 'W'.str_pad($week, 2, 0, STR_PAD_LEFT). ' -1 week'));
echo $prev_week; // returns 52 - 2012
于 2013-01-28T12:28:21.047 に答える