如果我有一个$date
YYYY-mm-dd
并想要得到$day
一周的特定(由0(星期日)到6(星期六)指定)YYYY-mm-dd
.
例如,如果我得到2012-10-11
的$date
和5
作为$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)
如果您的日期已经是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)
只是:
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' 就是你想要的。