Количество дней в месяце
Узнать количество дней в указанном месяце можно через функцию date() , указав свойство «t» (возвращает количество дней в месяце).
$month = 2; $year = 2020; date('t', mktime(0, 0, 0, $month, 1, $year)); // 29
Также количество дней в указанном месяце можно получить через функцию cal_days_in_month() .
$month = 2; $year = 2020; cal_days_in_month(CAL_GREGORIAN, $month, $year); // 29
Отличия между двумя способами в том, что date() возвращает количество дней с типом «строка», а cal_days_in_month() с типом «число».
Обновлено: 01 ноября 2020
Комментарии
Авторизуйтесь, чтобы добавлять комментарии
Как узнать с помощью PHP количество дней в месяце: особенности функции
![]()
Сегодня мы расскажем , как в PHP узнать количество дней в месяце. Создавая проект в интернете , важно, чтобы дата всегда соответствовала действительности и была точной. Потому что в сети очень много проектов , тесно связанных с текущим временем. Например, взять онлайн-торговлю на биржах, где важна каждая секунда. Если представить, что веб-ресурс, на котором трейдер совершает сделки , не синхронизирован по времени с биржей, на которой совершаются сделки, тогда трейдер может потерять свои деньги.
Определ ение в PHP количеств а дней в текущем месяце, возможно, не имеет такого же значения , как синхронизация времени бирж и и веб-ресурс а , но все же является важной функцией.
Как определить в PHP количество дней в месяце
- calendar — параметр календаря, по которому произв одится исчисление;
- month — параметр месяца, в котором необходимо определить количество дней;
- year — год из выбранного календаря.
Дата и время в PHP
- Функция «time()». При помощи этой функции можно узнать «абсолютное время» до сегодняшнего момента. «Абсолютное время» — начало исчислени я с 1 января 1970 года. Функция возвращает количество секунд, которые прошли с того момента и до времени ее запуска.
- Функция «getdate()». Эта функция возвра щает полную информацию о сегодняшней дате и времени запуска самой функции. В ответе будут: секунды, минуты, часы, день месяца, день недели, месяц, год, день года и «абсолютное время».
- Функция «date()». При помощи этой функции можно самостоятельно подстроить , чтобы дата и время выводились в необходимом формате . Чтобы форматировать время и дату «под себя» , можно использовать 24 аргумента и свойств.
- Функция «checkdate()». При помощи этой функции можно проверить правильность введенной даты по отношению к трем аргументам: месяц, день, год.
- Функция «strtime()». При помощи этой функции можно сформировать локальную дату и время в удобном формате. При формировании способа вывод а даты можно использовать 33 аргумент а .
Заключение
Как в PHP узнать количество дней в месяце? Необходимо применить функцию «cal_days_in_month». Если есть необходимость по-другому взаимодействовать с датой и временем в PHP, для этого внутри языка собрано несколько десятков функций. Наиболее популярные из них мы сегодня осветили.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
cal_days_in_month
Эта функция возвращает количество дней в месяце month года year для заданного календаря calendar .
Список параметров
Календарь, используемый для вычисления
Месяц в выбранном календаре
Год в выбранном календаре
Возвращаемые значения
Количество дней в конкретном месяце выбранного календаря
Примеры
Пример #1 Пример использования cal_days_in_month()
$number = cal_days_in_month ( CAL_GREGORIAN , 8 , 2003 ); // 31
echo «Всего < $number >дней в Августе 2003 года» ;
?>?php
User Contributed Notes 5 notes
16 years ago
Remember if you just want the days in the current month, use the date function:
$days = date(«t»);
20 years ago
Here’s a one-line function I just wrote to find the numbers of days in a month that doesn’t depend on any other functions.
The reason I made this is because I just found out I forgot to compile PHP with support for calendars, and a class I’m writing for my website’s open source section was broken. So rather than recompiling PHP (which I will get around to tomorrow I guess), I just wrote this function which should work just as well, and will always work without the requirement of PHP’s calendar extension or any other PHP functions for that matter.
I learned the days of the month using the old knuckle & inbetween knuckle method, so that should explain the mod 7 part. 🙂
/*
* days_in_month($month, $year)
* Returns the number of days in a given month and year, taking into account leap years.
*
* $month: numeric month (integers 1-12)
* $year: numeric year (any integer)
*
* Prec: $month is an integer between 1 and 12, inclusive, and $year is an integer.
* Post: none
*/
// corrected by ben at sparkyb dot net
function days_in_month ( $month , $year )
<
// calculate number of days in a month
return $month == 2 ? ( $year % 4 ? 28 : ( $year % 100 ? 29 : ( $year % 400 ? 28 : 29 ))) : (( $month — 1 ) % 7 % 2 ? 30 : 31 );
>
?>
Enjoy,
David Bindel
1 year ago
function lastDayOfMonth(string $time, int $deltaMonth, string $format = ‘Y-m-d’)
try $year = date(‘Y’, strtotime($time));
$month = date(‘m’, strtotime($time));
$increaYear = floor(($deltaMonth + $month — 1) / 12);
$year += $increaYear;
$month = (($deltaMonth + $month) % 12) ?: 12;
$day = cal_days_in_month(CAL_GREGORIAN, $month, $year);
return $time . ‘ + ‘ . $deltaMonth . ‘ => ‘ . date($format, strtotime($year . ‘-‘ . $month . ‘-‘ . $day)) . «\n»;
> catch (Exception $e) throw $e;
>
>
19 years ago
This will work great in future dates but will give the wrong answer for dates before 1550 (approx) when leap year was introduced and the calendar lost a year or two.
Sorry now to be more specific it has been a while sine I had to account for those later dates and had to take that into account but just a heads up for others to watch out.
16 years ago
# PHP Calendar (version 2.3), written by Keith Devens
?php
function generate_calendar ( $year , $month , $days = array(), $day_name_length = 3 , $month_href = NULL , $first_day = 0 , $pn = array()) $first_of_month = gmmktime ( 0 , 0 , 0 , $month , 1 , $year );
#remember that mktime will automatically correct if invalid dates are entered
# for instance, mktime(0,0,0,12,32,1997) will be the date for Jan 1, 1998
# this provides a built in «rounding» feature to generate_calendar()
$day_names = array(); #generate all the day names according to the current locale
for( $n = 0 , $t =( 3 + $first_day )* 86400 ; $n < 7 ; $n ++, $t += 86400 ) #January 4, 1970 was a Sunday
$day_names [ $n ] = ucfirst ( gmstrftime ( ‘%A’ , $t )); #%A means full textual day name
list( $month , $year , $month_name , $weekday ) = explode ( ‘,’ , gmstrftime ( ‘%m,%Y,%B,%w’ , $first_of_month ));
$weekday = ( $weekday + 7 — $first_day ) % 7 ; #adjust for $first_day
$title = htmlentities ( ucfirst ( $month_name )). ‘ ‘ . $year ; #note that some locales don’t capitalize month and day names
Функция date
Функция date выводит дату в заданном формате. Первым параметром функция принимает формат, а вторым необязательным параметром — момент времени в формате timestamp. Если второй параметр не указан — возьмется текущий момент времени, если указан — то заданный.
Формат задается управляющими командами (английскими буквами), при этом можно вставлять любые разделители между ними (дефисы, двоеточие и так далее).
Функция принимает следующие команды (заглавные буквы отличаются от обычных, обратите внимание):
- U – количество секунд, прошедших с 1 января 1970 года (то есть timestamp).
- z – номер дня от начала года.
- Y – год, 4 цифры.
- y — год, две цифры.
- m – номер месяца (с нулем спереди).
- n – номер месяца без нуля впереди.
- d – номер дня в месяце, всегда две цифры (то есть первая может быть нулем).
- j – номер дня в месяце без предваряющего нуля.
- w – день недели (0 — воскресенье, 1 — понедельник и т.д.).
- h – часы в 12 -часовом формате.
- H – часы в 24 -часовом формате.
- i – минуты.
- s – секунды.
- L – 1 , если високосный год, 0 , если не високосный.
- W – порядковый номер недели года.
- t – количество дней в указанном месяце.
Синтаксис
date(формат, [момент времени в формате timestamp]);
Примеры работы с date
Второй параметр функции date
Функция date имеет второй необязательный параметр, который принимает момент времени в формате timestamp. Если передать этот параметр, то функция date отформатирует не текущий момент времени, а тот, который передан вторым параметром. Этот timestamp можно получить, к примеру, через mktime (но не обязательно):
Этим можно воспользоваться, чтобы узнать номер дня недели за определенную дату — просто передадим ее вторым параметром с помощью функции mktime , а первым параметром поставим управляющий символ ‘w’ :
Смотрите также
- функцию mktime ,
которая возвращает момент времени в формате timestamp