PHP получает начальную и конечную дату недели по номеру недели - PullRequest
46 голосов
/ 01 февраля 2011

Я видел несколько вариантов по этому вопросу, но я думаю, что на этот вопрос пока нет ответа.

Мне нужно получить дату начала и окончания недели, выбранные по году и номеру недели (не по дате)

* * 1004 пример: * * 1005

ввод:

getStartAndEndDate($week, $year);

выход: * +1010 *

$return[0] = $firstDay;
$return[1] = $lastDay;

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

ДОПОЛНИТЕЛЬНО: пока мы на нем, формат даты должен быть Y-n-j (обычный формат даты, без начальных нулей.

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

Пожалуйста, помогите мне, спасибо заранее.

Ответы [ 14 ]

0 голосов
/ 21 июня 2018
$dateParam = '2018-06-10';
$week = date('w', strtotime($dateParam));
$date = new DateTime($dateParam);
$firstWeek = $date->modify("-".$week." day")->format("Y-m-d H:i:s");
$endWeek = $date->modify("+6 day")->format("Y-m-d H:i:s");
echo $firstWeek."<br/>";
echo $endWeek;

напечатает

2018-06-10 00:00:00
2018-06-16 00:00:00

надеюсь поможет

0 голосов
/ 14 августа 2013
function getStartAndEndDate($week, $year)
    {
        $week_start = new DateTime();
        $week_start->setISODate($year,$week);
        $return[0] = $week_start->format('d-M-Y');
        $time = strtotime($return[0], time());
        $time += 6*24*3600;
        $return[1] = date('d-M-Y', $time);
        return $return;
    }
0 голосов
/ 01 февраля 2011

Даже если вы не хотите использовать определенную дату, вы не можете избежать ее. Вы можете рассчитать неделю на основе ТОЛЬКО даты.

Шаги:

  1. получите первый день года
  2. решите, когда начнется первая неделя (есть некоторые правила, которые включают первый четверг, если я помню.
  3. добавить некоторое количество недель (ваш первый параметр). Zend_Date имеет функцию add (), где вы можете добавить недели, например. Это даст вам первый день недели.
  4. смещение и получение последнего дня.

Я бы порекомендовал работать с согласованной системой дат, например Zend_Date или Pear Date .

0 голосов
/ 01 февраля 2011

Вы пробовали Относительные даты PHP ? Это может сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...