|
|
|
| Здравствуйте.
Столкнулся со сложностью связанной с датами.
Имеется входная переменная со значение от 1 до 12 (номер месяца).
Переменная меняется на +1 и -1.
1-я проблема - переход за пределы 1 и 12
2-я проблема: подставить значение полученного месяца $current_month и учесть переход в годах
$begin = mktime(0, 0, 0, $current_month, 1, date("Y"));
|
| |
|
|
|
|
|
|
|
для: OLi
(30.09.2013 в 20:24)
| |
<?php
$month = 1;
$delta = -1;
$interval = new DateInterval('P1M');
$date = new DateTime("2006-$month-10");
($delta > 0) ? $date->add($interval) : $date->sub($interval);
echo $date->format('Y-m-d');
|
| |
|
|
|
|
|
|
|
для: OLi
(30.09.2013 в 20:24)
| | Чем лучше воспользоваться зависит от контекста для которого нужна эта дата. Но mktime не удобна для таких операций, в общем случае удобней strtotime:
<?
echo date('Y-m-d', strtotime('now +1 month'));
echo date('Y-m-d', strtotime('now -1 month'));
echo date('Y-m-d', strtotime('2013-12-20 +1 month'));
|
А возможно удобнее будет работать с объектами Date. | |
|
|
|
|
|
|
|
для: confirm
(01.10.2013 в 06:35)
| | Спасибо. Но мне нужно делать переход по месяцам/годам от заданного месяца. А не от текущего | |
|
|
|
|
|
|
|
для: Oli
(01.10.2013 в 09:41)
| | А строка три примера раз не поясняет как это сделать? Strtotime разбирает строку описывающей дату в английской нотации. Ознакомтесь в руководстве с этой функцией и допустимыми форматами даты, станет понятно, что описать можно что угодно.
И я говорил, что все зависит от контекста, и если к примеру речь идет о календаре и переходе в нем, то текущая дата которую вам надо модифицировать известана. | |
|
|
|
|
|
|
|
для: confirm
(01.10.2013 в 09:49)
| | Из примера
echo date('Y-m-d', strtotime('now +1 month'));
|
я понял, что к текущей дате добавляетс + 1 месяц.
Исходя из вашего замечания я могу сделать так:
$current_month = 12;
date('Y-'.$current_month.'-d', strtotime('now +1 month'));
|
Даст ли мне это +1 месяк и переход на следующий год в случае $current_month > 12? | |
|
|
|
|
|
|
|
для: oli
(01.10.2013 в 10:53)
| | А вы сами поняли какую фигню написали? )
Первый аргумент функции date задает выходной формат даты, и разве может быть в этом формате некая переменная $current_month?
Явно она должна быть указана для функции strtotime, так ведь? Эта же функция получает из строки указанной временную метку для функции date.
Вопрос только в том - текущий месяц чего? Если вам известна эта величина, и вам надо ее модифицировать на плюс/минус месяц, то указывайте эту величину плюс/минус month.
Я же не в курсе к чему вы пытаетесь что-то добавить. | |
|
|
|
|
|
|
|
для: confirm
(01.10.2013 в 11:02)
| | т-е вы хотели сказать примерно следующее?
$current_month = 10;
$current_month ++ ;
$time = strtotime("2010-".$current_month."-11");
$final = date("Y-m-d", strtotime("+1 month", $time));
|
| |
|
|
|
|
|
|
|
для: OLi
(02.10.2013 в 14:03)
| | Я вообще ничего не хочу, это вам чего-то надо. | |
|
|
|