Определение дня недели, месяца, года или номера недели в году

Задача
Необходимо узнать день или неделю года, день недели или день месяца. Например, требуется выводить на печать специальное сообщение каждый понедельник или в первый понедельник каждого месяца.

Решение
Надо передать соответствующие аргументы функции date() или strftime():

print strftime("Today is day %d of the month and %j of the year.");
print 'Today is day '.date('d').' of the month and '.date('z').' of the year.';

Обсуждение
Эти две функции, date() и strftime(), ведут себя по-разному. Отсчет дней года начинается с 0 в функции date(), но с 1 в функции strftime(). Например, можно вывести на печать что-нибудь только в понедельник, задав символ форматирования w в функции date() или строку %w в функции strftime():

if (1 == date('w')) {
print "Welcome to the beginning of your work week.";
}
if (1 == strftime('%w')) {
print "Only 4 more days until the weekend!";
}

Существуют различные способы определения номеров недель или номеров дней в неделе, поэтому будьте внимательнее при выборе соответствующего способа. Стандарт ISO (ISO 8601) устанавливает, что недели начинаются в понедельник, а дни недели нумеруются от 1 (понедельник) до 7 (воскресенье).


Неделя 1 – это первая неделя года, включающая четверг этого года. Это значит, что первая неделя в году – это неделя, в которой большинство дней принадлежат этому году. Номера недель лежат в диапазоне от 01 до 53. Другой стандарт устанавливает диапазон номеров недель от 00 до 53, при этом дни 53-й недели года могут пересечься с днями 00-й недели следующего года. До тех пор пока вы находитесь в рамках своей программы, можно не беспокоиться о каких-либо проблемах, но будьте осторожны при взаимодействии с другими PHP-программами или базами данных. На- пример, MySQL-функция DAYOFWEEK() считает воскресенье первым днем недели, но нумерует дни с 1 до 7, что является стандартом ODBC. Однако функция WEEKDAY() первым днем недели считает понедельник, а дни нумерует от 0 до 6. Функция WEEK() позволяет выбрать первый день недели между воскресеньем и понедельником, но она не совместима со стандартом ISO.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Вывод на печать даты и времени в определенном формате
Выделение дат и времен из строк
Выработка высокоточного времени
Определение разности между датами юлианского календаря
Определение разности между двумя датами

Вернуться в раздел: PHP / 3. Дата и время