Стандартные буквенные представления частей даты - это здорово, за исключением того факта, что они не так интуитивно понятны. Намного более удобный способ - определить базовые абстракции и ряд конкретных реализаций. Кроме того, при таком подходе вы можете воспользоваться автозаполнением.
Поскольку здесь мы говорим о датах, кажется вероятным, что основная абстракция - это ISO8601DateTime. Одна из конкретных реализаций - current datetime, та, которая вам нужна, когда a делает запрос к вашему бэкэнду, следовательно, Now()class. Второй вариант, который может вам пригодиться, - это дата и время, скорректированное на некоторый часовой пояс. Неудивительно, что это называется AdjustedAccordingToTimeZone. И, наконец, вам нужен день недели в часовом поясе прошедшего datetime: для этого есть LocalDayOfWeekкласс. Итак, код выглядит следующим образом:
(new LocalDayOfWeek(
new AdjustedAccordingToTimeZone(
new Now(),
new TimeZoneFromString($_POST['timezone'])
)
))
->value();
Подробнее об этом подходе читайте здесь .
date("N", $timestamp)для получения1..7значений, начиная с понедельника. В более старых версиях вы можете использовать эту уловку(date("w", $timestamp) + 6) % 7для получения0..6значений, начиная с понедельника.