How to get day of the week in php?

If I've got a $date YYYY-mm-dd and want to get a specific $day [specified by 0 [sunday] to 6 [saturday]] of the week that YYYY-mm-dd is in.

For example, if I got 2012-10-11 as $date and 5 as $day, I want to get 2012-10-12, if I've got 0 as $day, 2012-10-14

EDIT:
Most of you misunderstood it. I got some date, $date and want to get a day specified by 0-6 of the same week $date is in.

So no, I don't want the day of $date...

SparK

5,1332 gold badges23 silver badges32 bronze badges

asked Oct 11, 2012 at 8:17

2

I think this is what you want.

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

answered Oct 11, 2012 at 8:35

RezignedRezigned

4,7831 gold badge19 silver badges18 bronze badges

0

You can use the date[] function:

date['w']; // day of week

or

date['l']; // dayname

Example function to get the day nr.:

function getWeekday[$date] {
    return date['w', strtotime[$date]];
}

echo getWeekday['2012-10-11']; // returns 4

answered Oct 11, 2012 at 8:20

powtacpowtac

39.8k27 gold badges115 silver badges167 bronze badges

Try

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

answered Oct 11, 2012 at 8:30

air4xair4x

5,5601 gold badge22 silver badges36 bronze badges

2

If your date is already a DateTime or DateTimeImmutable you can use the format method.

$day_of_week = intval[$date_time->format['w']];

The format string is identical to the one used by the date function.

To answer the intended question:

$date_time->modify[$target_day_of_week - $day_of_week . ' days'];

answered Sep 17, 2018 at 8:46

PHP Manual said :

w Numeric representation of the day of the week

You can therefore construct a date with mktime, and use in it date["w", $yourTime];

answered Oct 11, 2012 at 8:21

blue112blue112

48.6k3 gold badges45 silver badges54 bronze badges

0

Just:

2012-10-11 as $date and 5 as $day


The $result = '2012-10-12' is what you want.

answered Oct 11, 2012 at 8:32

lijinmalijinma

2,8241 gold badge23 silver badges22 bronze badges

I'm afraid you have to do it manually. Get the date's current day of week, calculate the offset and add the offset to the date.

$current = date["w", $date]
$offset = $day - $current
$new_date = new DateTime[$date]
    ->add[
        new DateInterval[$offset."D"]
    ]->format['Y-m-d']

answered Oct 11, 2012 at 8:29

John DvorakJohn Dvorak

26.2k12 gold badges68 silver badges83 bronze badges

1

I had to use a similar solution for Portuguese [Brazil]:

Chủ Đề