0

ユーザーが週番号 X を指定しているという単純な状況があり、その週の月曜日の日付 (例: 12 月 12 日) を調べる必要があります。どうすればこれを達成できますか?年と週がわかります。

4

5 に答える 5

8

主に以前の提案に基づくいくつかのコード:

$predefinedYear = 2009;
$predefinedWeeks = 47;

// find first mоnday of the year
$firstMon = strtotime("mon jan {$predefinedYear}");

// calculate how much weeks to add
$weeksOffset = $predefinedWeeks - date('W', $firstMon);

// calculate searched monday
$searchedMon = strtotime("+{$weeksOffset} week " . date('Y-m-d', $firstMon));
于 2009-11-16T15:01:30.263 に答える
1

始めるためのアイデア:

  • 年の最初の日を取る
  • 7 * X 日を追加
  • strtodate を使用して、「先週の月曜日」と上で計算した日付を渡します。

上記に1日追加する必要がある場合があります。

週番号の計算方法と週の始まりによっては、これが外れる場合があります。(つまり、年の最初の週の月曜日が実際には前年の月曜日だった場合!)

これを徹底的にテストしてください-しかし、私は過去に同様の計算に同様のアプローチを使用しました。

于 2009-11-16T12:18:21.120 に答える
0
  //To calculate 12 th Monday from this Monday(2014-04-07)
    $n_monday=12;
    $cur_mon=strtotime("next Monday");
    for($i=1;$i<=$n_monday;$i++){
       echo date('Y-m-d', $cur_mon);
       $cur_mon=strtotime(date('Y-m-d', strtotime("next Monday",$cur_mon)));
    }

アウトプット

2014-04-07
2014-04-14
2014-04-21
2014-04-28
2014-05-05
2014-05-12
2014-05-19
2014-05-26
2014-06-02
2014-06-09
2014-06-16
2014-06-23
于 2014-04-03T14:46:58.633 に答える
0

評判の制限により、詳細チェックのために複数のリンクを投稿することはできません

http://php.net/manual/en/function.date.phpおよびhttp://php.net/manual/en/function.mktime.php

次のようなものを使用できます: mktime を使用して、その週のタイムスタンプを取得します: $stamp = mktime(0,0,0,0,<7*x>,) {数年前に似たようなものを使用したので、このように機能するかどうかわかりません}そして、$wDay = date('N',$stamp) を使用します。これで曜日がわかりました。月曜日のタイムスタンプは

mktime(0,0,0,0,<7*x>-$wDay+1,) {'N' パラメータは、月曜日の場合は 1、日曜日の場合は 6 を返します}

お役に立てれば

于 2009-11-16T12:40:30.830 に答える