109

を持っていて、その週の特定の (0 (日曜日) から 6 (土曜日) で指定)$date YYYY-mm-ddを取得したい場合。$dayYYYY-mm-dd

たとえば、2012-10-11as$date5asを取得した場合、$dayを取得したい、asを取得2012-10-12した場合、0$day2012-10-14

編集:
あなたのほとんどはそれを誤解しています。私はいくつかの日付$dateを取得し、同じ週の 0-6 で指定された日を取得したいと考えています$date

いいえ、私はその日を望んでいません$date...

4

9 に答える 9

148

これがあなたの望むものだと思います。

$dayofweek = date('w', strtotime($date));
$result    = date('Y-m-d', strtotime(($day - $dayofweek).' day', strtotime($date)));
于 2012-10-11T08:35:14.613 に答える
112

date() 関数を使用できます。

date('w'); // day of week

また

date('l'); // dayname

日付番号を取得する関数の例:

function getWeekday($date) {
    return date('w', strtotime($date));
}

echo getWeekday('2012-10-11'); // returns 4
于 2012-10-11T08:20:56.927 に答える
19

試す

$date = '2012-10-11';
$day  = 1;
$days = array('Sunday', 'Monday', 'Tuesday', 'Wednesday','Thursday','Friday', 'Saturday');
echo date('Y-m-d', strtotime($days[$day], strtotime($date)));
于 2012-10-11T08:30:26.430 に答える
10

あなたの日付がすでにDateTimeまたはメソッドDateTimeImmutableを使用できる場合format

$day_of_week = intval($date_time->format('w'));

フォーマット文字列は、日付関数で使用されるものと同じです。


意図した質問に答えるには:

$date_time->modify($target_day_of_week - $day_of_week . ' days');
于 2018-09-17T08:46:28.350 に答える
5

PHPマニュアルは言った:

w 曜日の数値表現

したがって、mktime で日付を作成し、その中で使用することができますdate("w", $yourTime);

于 2012-10-11T08:21:17.210 に答える
4

ただ:

2012-10-11 は $date として、5 は $day として

<?php
$day=5;
$w      = date("w", strtotime("2011-01-11")) + 1; // you must add 1 to for Sunday

echo $w;

$sunday = date("Y-m-d", strtotime("2011-01-11")-strtotime("+$w day"));

$result = date("Y-m-d", strtotime($sunday)+strtotime("+$day day"));

echo $result;

?>

$result = '2012-10-12' はあなたが望むものです。

于 2012-10-11T08:32:40.360 に答える
1

恐れ入りますが、手動で行う必要があります。日付の現在の曜日を取得し、オフセットを計算して、オフセットを日付に追加します。

$current = date("w", $date)
$offset = $day - $current
$new_date = new DateTime($date)
    ->add(
        new DateInterval($offset."D")
    )->format('Y-m-d')
于 2012-10-11T08:29:18.453 に答える