Месяц за неделей года? - PullRequest
2 голосов
/ 25 мая 2011

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

Я пытался перейти с date_parse_from_format('W/Y'), но безуспешно (это дает мне ошибки).

Есть ли способ пойти с date_parse_from_format() или есть другой способ?

Ответы [ 4 ]

6 голосов
/ 25 мая 2011
print date("m",strtotime("2011-W6-1"));

(отмечая, что в 2011 году в январе шесть недель, поэтому неделя 6 (по некоторым определениям) - в месяце 1).

2 голосов
/ 05 января 2015

Используя объекты PHP DateTime (который является предпочтительным способом работы с датами, смотрите ссылки ниже для получения дополнительной информации), вы можете сделать это следующим образом:

$dateTime = new \DateTime();
$dateTime->setISODate($year,$week);
$month = $dateTime->format('n');

Обратите внимание, что следующее не будет работать, так как неделя "W" не поддерживается :

$month = \DateTime::createFromFormat("W/Y ", "1/2015")->format('n');

Формат, используемый этим методом , аналогичен поддерживаемому функцией , когда вы пытаетесь использовать date_parse_from_format, отсюда и ошибки.

2 голосов
/ 22 февраля 2012

Просто хотел добавить примечание для первого ответа, номер недели должен быть 01-09 для недель с 1 по 9 (всегда будет месяц 1, если вы не добавите ведущий ноль)

date("m",strtotime("2011-W06-1"));
1 голос
/ 25 мая 2011

Примерно так и будет, это тоже проверено и работает:

function getMonthByNumber($number,$year)
{
    return date("F",strtotime('+ '.$number.' weeks', mktime(0,0,0,1,1,$year,-1)));
}

echo getMonthByNumber(27,2011);

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

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