如何使用PHP查找日期中某一天的日期?

Zul*_*kis 66 php date

如果我有一个$date YYYY-mm-dd并想要得到$day一周的特定(由0(星期日)到6(星期六)指定)YYYY-mm-dd.

例如,如果我得到2012-10-11$date5作为$day,我想2012-10-12,如果我有0作为$day,2012-10-14

编辑:
大多数人误解了它.我得到了一些约会,$date并希望得到同一周0-6指定的一天$date.

所以不,我不想要$date......

Rez*_*ned 98

我想这就是你想要的.

$dayofweek = date('w', strtotime($date));
$result    = date('Y-m-d', strtotime(($day - $dayofweek).' day', strtotime($date)));
Run Code Online (Sandbox Code Playgroud)


pow*_*tac 66

您可以使用date()函数:

date('w'); // day of week
Run Code Online (Sandbox Code Playgroud)

要么

date('l'); // dayname
Run Code Online (Sandbox Code Playgroud)

得到一天的示例函数nr.:

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

echo getWeekday('2012-10-11'); // returns 4
Run Code Online (Sandbox Code Playgroud)


air*_*r4x 12

尝试

$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)));
Run Code Online (Sandbox Code Playgroud)

  • 好方法,但正如您在 Rezigned 的回答中所见,您也可以使用“1 天”,从而使 $days 数组无用。 (2认同)
  • 这看起来更正确,因为当您输入“0”时,它返回正确的日期“2012-10-14”,@Rezigned 返回“2012-10-07” (2认同)

Joh*_*olz 9

如果您的日期已经是DateTime或者DateTimeImmutable您可以使用该format方法。

$day_of_week = intval($date_time->format('w'));
Run Code Online (Sandbox Code Playgroud)

格式字符串与日期函数使用的格式字符串相同。


要回答预期的问题:

$date_time->modify($target_day_of_week - $day_of_week . ' days');
Run Code Online (Sandbox Code Playgroud)


blu*_*112 5

PHP手册说:

w 星期几的数字表示

因此,您可以使用 mktime 构造一个日期,并在其中使用 date("w", $yourTime);


lij*_*nma 5

只是:

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;

?>
Run Code Online (Sandbox Code Playgroud)

$result = '2012-10-12' 就是你想要的。