我需要在php日期函数中澄清一下

I am generating next date using the following code:

   $s1=date('d/M/Y', strtotime('+1 day'));
   echo $s1;

for ex: Assume current date is 26/Aug/2014. so above code generates 27/Aug /2014 and storing in varible $s1.

By using the varible s1 i want to create 28/Aug/2014. how to create?

I dont want to use '+2 day' in STRTOTIME function. I want to generate next day based on variable $s1.

$s1=date('d/M/Y', strtotime('+1 day'));
echo $s1; echo "<br/>";
$date = strtotime(strtotime($s1). ' + 2 days');
$s2 = date('d/M/Y', $date);
echo $s2;

Now it's edited!! Check it!

You can use something like following:

$newvariable = strtotime ('+2 day' , $s1);

this is a very simple part

$s1=date('d/M/Y', strtotime('+2 day'));

echo $s1;

and if you want then copy the value of $s1 in another variable

function date_addDate($text, $da=0, $ma=0, $ya=0, $ha=0)
{
    $h=date('H',strtotime($text));
    $d=date('d',strtotime($text));
    $m=date('m',strtotime($text));
    $y=date('Y',strtotime($text));
    $fromTime =date("Y-m-d H:i:s", mktime($h+$ha, 0, 0, $m+$ma, $d+$da, $y+$ya));
    return $fromTime;
}

$date = date("Y-m-d H:i:s");
// $da days
// $ma months
// $ya years
// $ha hours
echo date_addDate($date, $da=0, $ma=0, $ya=0, $ha=0);

//out put : current date

echo date_addDate($date, $da=2, $ma=0, $ya=0, $ha=0);

//out put : As you want Try this

You can do it all with strtotime() but you have to remember that strtotime assumes a USA date format when it see's a / forward slash as a seperator. So before using $s1 you need to convert the / to a - so it assumes a sensible data format is being used.

$s1=date('d/M/Y', strtotime('+1 day'));
echo $s1.PHP_EOL;
// change date format as strtotime assumes USA dates
$date = strtotime( '+1 day', strtotime( str_replace('/','-',$s1) ) );
echo date('d/M/Y', $date);

When run on 26/Aug/2014 the result would be

27/Aug/2014
28/Aug/2014

The best way (using strtotime):

$tomorrow     = strtotime('+1 day');
$twoDaysHence = strtotime('+1 day', $tomorrow);

echo date('d/M/Y', $tomorrow);
echo date('d/M/Y', $twoDaysHence);

In other words, leave your date variables in the form of UNIX timestamps as returned by strtotime until you need to display them. Because you can do calculations directly with them in this format. Once you format that to a date string, you'll have to convert them back into a malleable form first. strtotime doesn't recognise the format d/M/Y automatically, so that makes that all the harder. You should use DateTime in that case:

$tomorrow  = date('d/M/Y', strtotime('+1 day'));
$timestamp = DateTime::createFromFormat('d/M/Y', $tomorrow);
$timestamp->modify('+1 day');
echo $timestamp->format('d/M/Y');

What about using DateTime ?

$d1 = new DateTime(date('Y-m-d'));
$d1->format('d/m/Y'); // 26/08/2014
$d1->modify('+1 day');
$d1->format('d/m/Y'); // 27/08/2014