Мне нужно определить, какой день недели является данной датой, и каков этот день недели в месяце данной даты.
3-е воскресенье января 2017 года — 15-е. Я знаю это, посмотрев на календарь. Но учитывая, что я знаю только точную дату, как я могу определить, что это третье воскресенье программно?
Определить фактический день недели довольно просто, загрузив дату в PHP и отформатировав ее для вывода дня:
$day_of_week = date('l', $timestamp);
Это другая часть, которую я не могу понять.
Попробуйте это, который работает ток день или вы можете установить любую другую допустимую метку времени в $ timestamp:
<?php
date_default_timezone_set('UTC');
$timestamp = time();
$day_of_week = date('l', $timestamp);
$day_of_the_month = date('j', $timestamp);
$occurence = ceil($day_of_the_month / 7);
$suffix = 'th';
if($occurence == 3){
$suffix = 'rd';
} else if($occurence == 2){
$suffix = 'nd';
} else if($occurence == 1){
$suffix = 'st';
}
print 'It is the '.$occurence.$suffix.' '.$day_of_week.' of this month';
?>
Я не вижу лучшего способа, чем просто пройти весь месяц и рассчитывать, что на них — воскресенье. Я бы также порекомендовал вам использовать такую библиотеку, как Carbon (Официальные документы Carbon)
Итак, ваш код должен делать:
$dt = Carbon::createFromDate(2012, 10, 6);
if ($dt->dayOfWeek === Carbon::SATURDAY) {
}
PD: Извините, у меня нет редактора PHP и доступа к моему ПК для разработки.