Php получить понедельник текущей недели

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

Получить дату для понедельника и пятницы для текущей недели (PHP)

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

$current_day = date("N"); $days_to_friday = 5 - $current_day; $days_from_monday = $current_day - 1; $monday = date("Y-m-d", strtotime("- Days")); $friday = date("Y-m-d", strtotime("+ Days")); 

8 ответов

Эти входы strtotime работают очень хорошо:

strtotime( "next monday" ); strtotime( "previous monday" ); strtotime( "today" ); strtotime( "next friday" ); strtotime( "previous friday" ); 

Все, что вам нужно сделать, это обернуть логику внутри некоторых операторов if.

@chhameed: strtotime(«next monday», strtotime(«2012-01-01»)) . Второй параметр, если указан, используется в качестве контрольной даты.

$monday = date( 'Y-m-d', strtotime( 'monday this week' ) ); $friday = date( 'Y-m-d', strtotime( 'friday this week' ) ); 

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

Читайте также:  Рандомайзер чисел в python

Этот вопрос нуждается в ответе DateTime: —

/** * @param String $day * @return DateTime */ function getDay($day) < $days = ['Monday' =>1, 'Tuesday' => 2, 'Wednesday' => 3, 'Thursday' => 4, 'Friday' => 5, 'Saturday' => 6, 'Sunday' => 7]; $today = new \DateTime(); $today->setISODate((int)$today->format('o'), (int)$today->format('W'), $days[ucfirst($day)]); return $today; > 
var_dump(getDay('Monday')->format('l dS F Y')); var_dump(getDay('Friday')->format('l dS F Y')); 
string 'Monday 30th September 2013' (length=26) string 'Friday 04th October 2013' (length=24) 

Это зависит от того, как вы определяете неделю, но я придумал эту функцию, которая даст вам дату ближайшего «понедельника» или «пятницы» (или любого дня, если на то пошло)

Вход: день недели ( «воскресенье», «понедельник» и т.д.)

Выход: если я попрошу ближайшего «воскресенья» и сегодня:

  • «Воскресенье»: сегодня я получу дату.
  • «Понедельник»: я получу вчера дату.
  • «Суббота: я получу дату завтра.
$first_week_date = date('d F Y', strtotime('next Monday -1 week', strtotime('this sunday'))); $last_week_date = date('d F Y', strtotime('next Monday -1 week + 4 days', strtotime('this sunday'))); 

Я искал аналогичную вещь, за исключением того, что я хотел любой понедельник, а не только на этой неделе. Вот что я придумал:

function getSunday(DateTime $date)< $outdate = clone($date); $day = $date->format("w"); // get the weekday (sunday is 0) $outdate->sub(new DateInterval("P".$day."D")); // subtracting the weekday from the date always gives Sunday return $outdate; > 

Он принимает произвольную дату и дает воскресенье. Затем вы можете легко добавить дни назад, чтобы получить с понедельника по субботу.

Как показывает верхний ответ, использование PHP strtotime() — это самый простой способ.

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

$monday = strtotime('next monday', strtotime('previous sunday')); $friday = strtotime('next friday', strtotime('previous sunday')); 

Мне нужно определение текущей недели по ISO 8601. Я хочу, чтобы понедельник всегда определялся как понедельник, начавшая эту текущую неделю.

Следующее решение отлично работает для меня:

$monday = strtotime(date('o-\WW')); $friday = strtotime("next friday",$monday); 

Для $monday этот метод всегда будет возвращать понедельник, который запустил эту календарную неделю. К сожалению, этот метод использует PHP 5.1 для анализа формата даты o .

Чтобы получить любой день недели, вы можете попробовать:

function time_for_week_day($day_name, $ref_time=null)
time_for_week_day('wednesday'); time_for_week_day('friday',strtotime('2014-12-25')); 

Источник

Получить дату понедельника на текущей неделе в PHP 4

Мне нужно найти дату понедельника на текущей неделе. Как я могу это сделать в PHP 4?

$time = strtotime('monday this week'); 
return strtotime('last monday', strtotime('next sunday')); 
echo date('Ym-d',time()+( 1 - date('w'))*24*3600); 
echo date('Ym-d',time()+( 8 - date('w'))*24*3600); 

1 в понедельник, 2 вторник, 3 среды и так далее. Попробуй.

echo date('Ym-d', strtotime('previous monday')); 

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

$thisMonday = date(‘l, F d, Y’, time() — ((date(‘w’)-1) * 86400) );

  • date(‘w’) – это числовое представление дня недели (0 = воскресенье, 6 = суббота)
  • есть 86400 секунд в день
  • мы берем текущее время и вычитаем (один день * (день недели – 1))

Итак, если в настоящее время среда (день 3), понедельник – два дня назад:

time() — (86400 * (3 — 1)) = time() — 86400 * 2

Если в понедельник (1 день), мы получаем:

time() — (86400 * (1 — 1)) = time() — 86400 * 0 = time()

Если это воскресенье (день 0), понедельник – завтра.

time() — (86400 * (0 — 1)) = time() — -86400 = time() + 86400

echo date('Ym-d', strtotime('last monday', strtotime('next monday'))); 

Он вернет текущую дату, если сегодня понедельник, и в противном случае вернется в последний понедельник. По крайней мере, это делается на моем PHP 5.2.4 под en_US locale.

$day_of_week = date("N") - 1; $monday_time = strtotime("-$day_of_week days"); 
 echo "Monday this week : ", date("Ymd",time() - $weekday * 86400) , "\n"; ?> 

Источник

Операции с датами и временем 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); // 28.07.2023 15:35:16 /* или */ $time = strtotime('+10 seconds', time()); echo date('d.m.Y H:i:s', $time); // 28.07.2023 15:35:16

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

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

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

$time = time() + 3600; echo date('d.m.Y H:i:s', $time); // 28.07.2023 16:35:06 /* или */ $time = strtotime('+1 hours', time()); echo date('d.m.Y H:i:s', $time); // 28.07.2023 16:35:06

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

$time = time() + 86400; echo date('d.m.Y H:i:s', $time); // 29.07.2023 15:35:07 /* или */ $time = strtotime('+1 days', time()); echo date('d.m.Y H:i:s', $time); // 29.07.2023 15:35:07

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

$time = strtotime('+1 week', time()); echo date('d.m.Y H:i:s', $time); // 04.08.2023 15:35:07

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

$time = strtotime('+1 month', time()); echo date('d.m.Y H:i:s', $time); // 28.08.2023 15:35:07

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

$time = strtotime('+1 year', time()); echo date('d.m.Y H:i:s', $time); // 28.07.2024 15:35:07

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

$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-страниц и облегчить работу поисковым роботам.

Источник

Оцените статью