PHP добавить дни к определенной дате? - PullRequest
3 голосов
/ 28 июля 2011

Сегодня я чувствую себя немного толстым и, возможно, немного уставшим ..

Я пытаюсь добавить дни в строковую дату ...

$startdate = "18/7/2011";

$enddate = date(strtotime($startdate) . " +1 day");
echo $startdate;
echo $enddate;

Мои головы не с этим ... где я иду не так?

Спасибо

Lee

Ответы [ 6 ]

9 голосов
/ 28 июля 2011

Либо

$enddate = date(strtotime("+1 day", strtotime($startdate)));

или

$enddate = date(strtotime($startdate . "+1 day"));

должно работать.Однако ни одна из них не работает с датой 18/7/2011.Они отлично работают с 7/18/2011: http://codepad.viper -7.com / IDS0gI .Возможно, это проблема локализации.

Во-первых, использование второго параметра для strtotime говорит, что нужно добавить один день относительно этой даты.Во-вторых, strtotime все вычисляет.Но, видимо, только если дата в формате даты США или в другом формате с использованием тире: http://codepad.viper -7.com / SKJ49r

3 голосов
/ 08 ноября 2014

попробуйте это, (проверено и работало нормально)

date('d-m-Y',strtotime($startdate . ' +1 day'));
date('d-m-Y',strtotime($startdate . ' +2 day'));
date('d-m-Y',strtotime($startdate . ' +3 day'));
date('d-m-Y',strtotime($startdate . ' +30 day'));
0 голосов
/ 22 мая 2014

Сначала вы должны изменить формат даты по вызову changeDateFormat ("18/7/2011"): возврат: 2011-07-18 если ваш аргумент разбора

функция changeDateFormat ($ vdate) {
$ pos = strpos ($ vdate, '/');
if ($ pos === false) возвращает $ vdate;
$ куски = взорваться ("/", $ vdate);
$ thisday = str_pad ($ штук [0], 2, "0", STR_PAD_LEFT);
$ thismonth = str_pad ($ штук [1], 2, "0", STR_PAD_LEFT);
$ thisyear = $ штук [2];
$ thisdate = "$ thisyear- $ thismonth- $ thisday";
вернуть $ thisdate;
}

А это ..

$ startdate = changeDateFormat ($ startdate);
$ enddate = date ('Y-m-d', strtotime ($ startdate. "+". $ noOfDays. "day"));

0 голосов
/ 28 июля 2011

Это будет работать

$startdate = "18/7/2011";
$enddate = date('d/m/Y', strtotime($startdate) + strtotime("+1 day", 0));
echo $startdate;
echo $enddate;

Сначала дата начала разбирается в целое число, а затем относительное время.

Вы также можете использовать второй параметр strToTime:

$startdate = "18/7/2011";
$enddate = date('d/m/Y', strtotime("+1 day", strtotime($startdate)));
0 голосов
/ 28 июля 2011

Вы, наверное, ищете strtotime($startdate . "+ 1 day") или что-то

0 голосов
/ 28 июля 2011

первый параметр даты () имеет формат

dmY G: i: s

, например,

Кроме того, ваша $ startdate недействительна

...