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



如果我有一个$date YYYY-mm-dd,并且想要获取YYYY-mm-dd所在周的特定$day(由 0(星期日)到 6(星期六)指定)。

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

编辑:
你们大多数人都误解了它。我有一些日期,$date,并希望在$date所在的同一周的 0-6 指定一天。

所以不,我不想要$date的那一天...

我认为这就是你想要的。

$dayofweek = date('w', strtotime($date));
$result    = date('Y-m-d', strtotime(($day - $dayofweek).' day', strtotime($date)));

您可以使用 date() 函数:

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

date('l'); // dayname

获取日期 nr 的示例函数:

function getWeekday($date) {
    return date('w', strtotime($date));
}
echo getWeekday('2012-10-11'); // returns 4

尝试

$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)));

如果您的日期已经是DateTimeDateTimeImmutable您可以使用format方法。

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

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


要回答预期的问题,请执行以下操作:

$date_time->modify($target_day_of_week - $day_of_week . ' days');

PHP 手册说:

w 星期几的数字表示

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

只是:

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' 是您想要的。

我不得不对葡萄牙语(巴西)使用类似的解决方案:

<?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)

怕你必须手动完成。获取日期的当前星期几,计算偏移量并将偏移量添加到日期。

$current = date("w", $date)
$offset = $day - $current
$new_date = new DateTime($date)
    ->add(
        new DateInterval($offset."D")
    )->format('Y-m-d')
<?php echo date("H:i", time()); ?>
<?php echo $days[date("l", time())] . date(", d.m.Y", time()); ?>

很简单,这应该可以解决问题

最新更新