Как определить, является ли день недели первым, вторым, третьим и т. Д. В месяц?

Мне нужно определить, какой день недели является данной датой, и каков этот день недели в месяце данной даты.

3-е воскресенье января 2017 года — 15-е. Я знаю это, посмотрев на календарь. Но учитывая, что я знаю только точную дату, как я могу определить, что это третье воскресенье программно?

Определить фактический день недели довольно просто, загрузив дату в PHP и отформатировав ее для вывода дня:

$day_of_week = date('l', $timestamp);

Это другая часть, которую я не могу понять.

0

Решение

Попробуйте это, который работает ток день или вы можете установить любую другую допустимую метку времени в $ 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';
?>
1

Другие решения

Я не вижу лучшего способа, чем просто пройти весь месяц и рассчитывать, что на них — воскресенье. Я бы также порекомендовал вам использовать такую ​​библиотеку, как Carbon (Официальные документы Carbon)

Итак, ваш код должен делать:

  1. Вы собираете дату
$dt = Carbon::createFromDate(2012, 10, 6);
  1. У объекта даты Carbon есть свойство под названием «dayOfWeek», так что здесь больше нет хлопот
if ($dt->dayOfWeek === Carbon::SATURDAY) {

}
  1. @CBroe на самом деле лучше. Вы можете просто разделить на 7 номер своей недели (без десятичных дробей) и добавить 1 к результату, это вхождение.

PD: Извините, у меня нет редактора PHP и доступа к моему ПК для разработки.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector