Php сколько дней до конца месяца

Содержание
  1. cal_days_in_month
  2. Список параметров
  3. Возвращаемые значения
  4. Примеры
  5. User Contributed Notes 5 notes
  6. Операции с датами и временем Unixtime в PHP
  7. Получение временных меток и дат
  8. Число дня недели
  9. Числа месяца
  10. Текущий месяц:
  11. Преведущий месяц:
  12. Следующий месяц:
  13. Число дней в текущем месяце
  14. Порядковый номер недели
  15. Число дней в текущем году
  16. Текущий квартал
  17. Арифметические операции
  18. Прибавить к дате 10 секунд
  19. Прибавить к дате 10 минут
  20. Прибавить к дате 1 час
  21. Прибавить к дате 1 день
  22. Прибавить к дате неделю
  23. Прибавить к дате месяц
  24. Прибавить к дате год
  25. Сколько прошло
  26. Сколько прошло c 8:00
  27. Сколько прошло c понедельника этой недели
  28. Сколько прошло c начала года
  29. Сколько прошло c определённой даты
  30. Сколько остается
  31. Сколько остается до 23:00
  32. Сколько остается до конца недели
  33. Сколько остается до конца месяца
  34. Сколько остается до конца года
  35. Сколько остается до определенной даты
  36. Время между датами
  37. Количество часов между датами
  38. Количество дней между датами
  39. Количество месяцев между датами
  40. Комментарии 2
  41. Другие публикации
  42. Временная метка, вычитаем количество дней до конца месяца
  43. Решение

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 года» ;
?>

User Contributed Notes 5 notes

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

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;
>
>

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.

# PHP Calendar (version 2.3), written by Keith Devens

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

Источник

Операции с датами и временем Unixtime в PHP

Unix-время (англ. Unix time, также POSIX-время) — система описания моментов во времени. Определяется как количество секунд, прошедших с полуночи 1 января 1970 года.

В PHP текущую метку времени возвращает функция time() и функция strtotime(), также с unix-метками работает класс DateTime.

Получение временных меток и дат

Число дня недели

// Понедельник текущей недели: $time = strtotime('this week monday, 00:00'); echo date('d.m.Y H:i', $time); // 24.07.2023 00:00 // Понедельник предыдущий недели: $time = strtotime('previous week monday, 00:00'); echo date('d.m.Y H:i', $time); // 17.07.2023 00:00 // Понедельник следующей недели: $time = strtotime('next monday, 00:00'); echo date('d.m.Y H:i', $time); // 31.07.2023 00:00

Числа месяца

Текущий месяц:

// Первый день текущего месяца: $time = strtotime('first day of this month 00:00'); echo date('d.m.Y H:i:s', $time); // 01.07.2023 00:00:00 // Последний день текущего месяца: $time = strtotime('last day of this month 23:59'); echo date('d.m.Y H:i:s', $time); // 31.07.2023 23:59:00

Преведущий месяц:

// Первый день предыдущего месяца: $time = strtotime('first day of previous month 00:00'); echo date('d.m.Y H:i:s', $time); // 01.06.2023 00:00:00 // Последний день предыдущего месяца: $time = strtotime('last day of previous month 23:59'); echo date('d.m.Y H:i:s', $time); // 30.06.2023 23:59:00

Следующий месяц:

// Первый день следующего месяца: $time = strtotime('first day of next month 00:00'); echo date('d.m.Y H:i:s', $time); // 01.08.2023 00:00:00 // Последний день следующего месяца: $time = strtotime('last day of next month 23:59'); echo date('d.m.Y H:i:s', $time); // 31.08.2023 23:59:00

Число дней в текущем месяце

Порядковый номер недели

Число дней в текущем году

echo date('L') ? 366 : 365; // 365

Текущий квартал

echo intval((date('n') + 2) / 3); // 3

Арифметические операции

Для сложения и вычитания времени можно применить функцию strtotime() или просто работать с секундами:

1 минута 60 секунд 10 минут 600 секунд
1 час 3600 секунд 10 часов 36000 секунд
1 день 86400 секунд 2 дня 172800 секунд
1 неделя 604800 секунд 2 недели 1209600 секунд
1 месяц 2629743 секунд 2 месяца 5259486 секунд
1 год 31556926 секунд 2 года 63072000 секунд

Прибавить к дате 10 секунд

$time = time() + 10; echo date('d.m.Y H:i:s', $time); // 25.07.2023 04:55:20 /* или */ $time = strtotime('+10 seconds', time()); echo date('d.m.Y H:i:s', $time); // 25.07.2023 04:55:20

Прибавить к дате 10 минут

$time = time() + 600; echo date('d.m.Y H:i:s', $time); // 25.07.2023 05:05:10 /* или */ $time = strtotime('+10 minutes', time()); echo date('d.m.Y H:i:s', $time); // 25.07.2023 05:05:10

Прибавить к дате 1 час

$time = time() + 3600; echo date('d.m.Y H:i:s', $time); // 25.07.2023 05:55:10 /* или */ $time = strtotime('+1 hours', time()); echo date('d.m.Y H:i:s', $time); // 25.07.2023 05:55:10

Прибавить к дате 1 день

$time = time() + 86400; echo date('d.m.Y H:i:s', $time); // 26.07.2023 04:55:10 /* или */ $time = strtotime('+1 days', time()); echo date('d.m.Y H:i:s', $time); // 26.07.2023 04:55:10

Прибавить к дате неделю

$time = strtotime('+1 week', time()); echo date('d.m.Y H:i:s', $time); // 01.08.2023 04:55:10

Прибавить к дате месяц

$time = strtotime('+1 month', time()); echo date('d.m.Y H:i:s', $time); // 25.08.2023 04:55:10

Прибавить к дате год

$time = strtotime('+1 year', time()); echo date('d.m.Y H:i:s', $time); // 25.07.2024 04:55:10

Сколько прошло

Сколько прошло c 8:00

$date = date('d.m.Y 08:00'); $diff = time() - strtotime($date); echo round($diff / 3600, 1); // -3,1 часов

Сколько прошло c понедельника этой недели

$time = strtotime('monday'); $diff = time() - $time; echo round($diff / 3600); // 29 часов echo round($diff / 86400, 1); // 1,2 дней

*Дни недели: monday, tuesday, wednesday, thursday, friday, saturday, sunday.

Сколько прошло c начала года

$date = date('01.01.Y 00:00:00'); $diff = time() - strtotime($date); echo intval($diff / 86400); // 205 дней // или echo date('z'); // 205

Сколько прошло c определённой даты

$date = '10.08.2016'; $diff = time() - strtotime($date); echo round($diff / 3600); // 60965 часов echo round($diff / 86400); // 2540 дней

Сколько остается

Сколько остается до 23:00

$time = strtotime(date('d.m.Y 23:00')); $diff = $time - time(); echo round($diff / 3600, 1); // 18,1 часов

Сколько остается до конца недели

$date = strtotime('next sunday, 23:59'); $diff = $date - time(); echo round($diff / 3600); // 139 часов echo round($diff / 86400); // 6 дней

*Дни недели: monday, tuesday, wednesday, thursday, friday, saturday, sunday.

Сколько остается до конца месяца

$time = strtotime(date('Y-m-t 23:59')); $diff = $time - time(); echo round($diff / 3600); // 163 часов echo round($diff / 86400); // 7 дней

Сколько остается до конца года

$time = strtotime(date('Y-12-31 23:59')); $diff = $time - time(); echo round($diff / 3600); // 3835 часов echo round($diff / 86400); // 160 дней

Сколько остается до определенной даты

$date = '10.08.2025'; $diff = strtotime($date) - time(); echo round($diff / 3600); // 17923 часов echo round($diff / 86400); // 747 дней

Время между датами

Количество часов между датами

$date_1 = '01.01.2021 10:00'; $date_2 = '10.03.2021 18:00'; $seconds = abs(strtotime($date_1) - strtotime($date_2)); echo round($seconds / 3600); // 1640

Количество дней между датами

$date_1 = '01.01.2021 10:00'; $date_2 = '10.03.2021 18:00'; $seconds = abs(strtotime($date_1) - strtotime($date_2)); echo round($seconds / 86400, 1); // 68,3

Количество месяцев между датами

$date_1 = strtotime('01.01.2021 10:00'); $date_2 = strtotime('10.03.2021 18:00'); $months = 0; while (strtotime('+1 month', $date_1) < $date_2) < $months++; $date_1 = strtotime('+1 month', $date_1); >$days = round(($date_2 - $date_1) / (60 * 60 * 24)); echo $months . ' месяца, ' . $days . ' дней'; // 2 месяца, 9 дней

Комментарии 2

Специально не поленился и авторизовался, чтобы выразить благодарность авторам сайта, молодцы ребята! Неоднократно на вашем сайте получал именно нужную инфу, у вас все примеры разжеваны, с разными вариантами, не то что где нибудь найдешь вроде то, что тебе нужно и потом полдня думаешь, как под свою задачу это допилить. В данном случае мне нужно было кол-во дней между датами, при чем число должно быть дробным — то есть 3.6 дня, например. У вас нашел, скопировал, и вставил (только имена переменных поменял), все. Именно то, что нужно. И так бывало уже не раз. В общем, спасибо, и обязательно продолжайте в том же духе!

Авторизуйтесь, чтобы добавить комментарий.

Другие публикации

Как настроить Last-Modified

Заголовок Last-Modified помогает оптимизировать загрузку web-страниц и облегчить работу поисковым роботам.

Источник

Временная метка, вычитаем количество дней до конца месяца

Здравствуйте.
Не могу понять как решить такую задачу.

Есть временная метка — 1470574120
Нужно вычислить сколько дней в этом месяце.
Затем получить количество дней с этой даты до конца месяца.

Как работать с «калькулятором календаря» ?
Подскажите куда смотреть как это решить ?

Дан порядковый номер дня месяца, вывести на экран количество дней оставшихся до конца месяца
Дан порядковый номер дня месяца, вывести на экран количество дней оставшихся до конца месяца.

Определить количество дней до конца месяца
Определить количество дней до конца месяца.

Определить количество дней до конца месяца
Определить количество дней до конца месяца.

Вывести на экран количество дней, оставшихся до конца месяца
Дан номер месяца и порядковый номер дня месяца, вывести на экран количество дней оставшихся до.

Лучший ответ

Сообщение было отмечено Rassol2 как решение

Решение

$time = '1470574120'; echo $diff = date("t", time($time)) - date("d", time($time));//24

Огромное спасибо +1
А я что то по наивности искал информацию в этом разделе — http://php.net/manual/ru/book.calendar.php

По заданному числу и номеру месяца вывести количество дней до конца года
Помогите написать программу, которая по заданному числу и номеру месяца выводит кол-во дней до.

Дата следующего дня, последний день месяца и сколько дней осталось до конца месяца
написать программу которая вычисляет дату следующего дня определяет последний день месяца и сколько.

Определить сколько дней осталось до конца месяца
Даны день, месяц и год. Вывести дату в виде «23 мая 1978 года.». Определить сколько дней осталось.

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

Источник

Читайте также:  Css no horizontal scroll bar
Оцените статью