Intereting Posts
В PHP, как я могу добавить нумерованную цифровую строку и сохранить нулевое дополнение? php отправлять электронную почту с помощью gmail smtp Страница входа выглядит как не перенаправление на следующую страницу, как я могу это исправить? Аурелия, начинающаяся с параметров, переданных PHP PHP / Apache / AJAX – ограничение POST? Разделить строку с даты Как проверить, какой пользовательский php работает как? Невозможно использовать интерпретатор командной строки Как вы печатаете необработанные символы UTF-8 из их номеров? php Как запустить внешнюю программу – возникли проблемы с системой и exec Функциональный литерал в классе PHP Silex: jQuery запрос AJAX вызывает исключение – для «GET …» не найден маршрут Как отправлять и извлекать данные из веб-службы с помощью PHP и Android Любой preg_match () для извлечения URL-адресов изображений из текста? JSON для PHP Ассоциативный массив

Поиск диапазона дат для текущей недели, месяца и года

Предположим, у меня есть дата со мной:

2011-04-05 (ie, 5th April, 2011) 

Я хочу найти диапазон дат для текущей недели, месяца и года

 Current Week: 3rd April to 9th April Current Month: 1st April to 30 April Current Year: 1st Jan to 31 Dec 

Я понимаю, что текущий год будет всегда с 1 января по 31 декабря, но как насчет текущего месяца и недели, как я могу его найти?

Редактировать:

Как я могу найти дату, которая на 10 дней раньше или позже с определенной даты. Пример:

Предположим, что сегодняшняя дата – 6 апреля 2011 г. 10 день назад: 28 марта 2011 г. 10 дней спустя: 15 апреля 2011 г.

Любые мысли об этом, ребята?

вы можете использовать strtotime

пример :

  date('dmY',strtotime('last day of this month')) date('dmY',strtotime('last monday')) // for first day of this week 
  function rangeMonth ($datestr) { date_default_timezone_set (date_default_timezone_get()); $dt = strtotime ($datestr); return array ( "start" => date ('Ym-d', strtotime ('first day of this month', $dt)), "end" => date ('Ym-d', strtotime ('last day of this month', $dt)) ); } function rangeWeek ($datestr) { date_default_timezone_set (date_default_timezone_get()); $dt = strtotime ($datestr); return array ( "start" => date ('N', $dt) == 1 ? date ('Ym-d', $dt) : date ('Ym-d', strtotime ('last monday', $dt)), "end" => date('N', $dt) == 7 ? date ('Ym-d', $dt) : date ('Ym-d', strtotime ('next sunday', $dt)) ); } print_r (rangeMonth('2011-4-5')); // format: YYYY-MD print_r (rangeWeek('2011-4-5')); 

выход для rangeMonth()

 Array ( [start] => 2011-04-01 [end] => 2011-04-30 ) 

выход для rangeWeek()

 Array ( [start] => 2011-04-04 [end] => 2011-04-08 ) 

Обратите внимание: такие функции, как getdate (), date () и т. Д. Throw Предупреждение, если часовой пояс по умолчанию не установлен в php.ini.

Это решение прост, и оно принимает во внимание, когда текущий день – понедельник или воскресенье.

ПРИМЕЧАНИЕ. Использование strtotime («последний понедельник») может работать, если день отличается от понедельника, иначе он вернется в предыдущий понедельник. Из-за этого мы должны использовать strtotime («последний понедельник», strtotime («завтра»)), и он будет работать в любой день текущей недели =)

Решение:

 $monday = strtotime('last monday', strtotime('tomorrow')); $sunday = strtotime('+6 days', $monday); echo "<P>". date('dM-Y', $monday) . " to " . date('dM-Y', $sunday) . "</P>"; 

Следующий код даст вам начало и последнюю дату недели:

  $today = getdate(); print_r($today); echo "<br/>"; $weekStartDate = $today['mday'] - $today['wday']; $weekEndDate = $today['mday'] - $today['wday']+6; echo "<br/>"; echo "<br/>"; echo "week start date:".$weekStartDate; echo "<br/>"; echo "week end date:".$weekEndDate; 

Надеюсь, поможет…

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

Рабочий пример правильно обрабатывает проблему в понедельник

 <?php $monday = strtotime("last monday"); $monday = date('w', $monday)==date('w') ? $monday+7*86400 : $monday; $sunday = strtotime(date("Ymd",$monday)." +6 days"); $this_week_sd = date("Ymd",$monday); $this_week_ed = date("Ymd",$sunday); echo "Current week range from $this_week_sd to $this_week_ed "; ?>