如果我有一个$date
YYYY-mm-dd
并希望获得{{1}周的特定$day
(由0(星期日)到6(星期六)指定)在...中。
例如,如果YYYY-mm-dd
为2012-10-11
而$date
为5
,我想$day
,如果我有2012-10-12
1}}为0
,$day
修改
大多数人误解了它。我得到了一些约会2012-10-14
,并希望得到同一周内{0}指定的一天$date
。
所以不,我不想要$date
...
答案 0 :(得分:83)
我认为这就是你想要的。
$dayofweek = date('w', strtotime($date));
$result = date('Y-m-d', strtotime(($day - $dayofweek).' day', strtotime($date)));
答案 1 :(得分:57)
您可以使用date()函数:
date('w'); // day of week
或
date('l'); // dayname
获取日期的示例函数:
function getWeekday($date) {
return date('w', strtotime($date));
}
echo getWeekday('2012-10-11'); // returns 4
答案 2 :(得分:11)
尝试
$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)));
答案 3 :(得分: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'就是你想要的。
答案 4 :(得分:3)
PHP手册说:
w星期几的数字表示
因此,您可以使用mktime构建日期,并在其中使用date("w", $yourTime);
答案 5 :(得分:3)
如果您的日期已经是DateTime
或DateTimeImmutable
,则可以使用format
方法。
$day_of_week = intval($date_time->format('w'));
格式字符串与date函数使用的格式字符串相同。
要回答预期的问题:
$date_time->modify($target_day_of_week - $day_of_week . ' days');
答案 6 :(得分:1)
我担心你必须手动完成。 获取日期的当前星期几,计算偏移量并将偏移量添加到日期。
$current = date("w", $date)
$offset = $day - $current
$new_date = new DateTime($date)
->add(
new DateInterval($offset."D")
)->format('Y-m-d')
答案 7 :(得分:0)
我不得不对葡萄牙语(巴西)使用类似的解决方案:
<?php
$scheduled_day = '2018-07-28';
$days = ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'];
$day = date('w',strtotime($scheduled_day));
$scheduled_day = date('d-m-Y', strtotime($scheduled_day))." ($days[$day])";
// provides 28-07-2018 (Sáb)
答案 8 :(得分:0)
<?php echo date("H:i", time()); ?>
<?php echo $days[date("l", time())] . date(", d.m.Y", time()); ?>
简单,这可以解决问题